在TextMate中编写CoffeeScript并希望使用第三方Javascript库(如jQuery或Raphael)时,需要添加“require”,如下所示:
$ = require 'jquery'
这在使用命令行中的coffee -c myfile.coffee
时工作正常,但在尝试使用此错误进行编译时在TextMate包中失败:
Error: Cannot find module 'jquery'
at Function._resolveFilename (module.js:317:11)
at Function._load (module.js:262:25)
at require (module.js:346:19)
at Object. (.:3:7)
at Object. (.:4:4)
at Module._compile (module.js:402:26)
at Object.run (/usr/lib/node_modules/coffee-script/lib/coffee-script.js:62:19)
at /usr/lib/node_modules/coffee-script/lib/command.js:120:29
at Socket. (/usr/lib/node_modules/coffee-script/lib/command.js:154:14)
at Socket.emit (events.js:61:17)
在此示例中,代码全部位于项目根目录的同一目录中。
指定时会出现同样的情况:
$ = require 'jquery.js'
其他人如何使用TextMate包在CoffeeScript中进行编译?除了最琐碎的代码之外,这对我来说似乎是一个显而易见的事。除了语法高亮之外,这肯定是这个包中最重要的部分之一吗?
答案 0 :(得分:3)
您点击了“运行”命令(⌘R),相当于coffee myfile.coffee
。
您想要“编译和显示JS”(⌘B),相当于coffee -c --print --bare myfile.coffee
。这应该打开一个带有编译输出的窗口
var $;
$ = require('jquery');
至于require
- 像jQuery和Raphael这样的库,我希望你理解require
只是一个用于加载模块的运行时函数;它没有编译时的意思。您可能来自C ++或Java这样的语言,其中有一个“链接器”。另一方面,在CoffeeScript中,代码一次编译为JavaScript一个文件,JavaScript文件被单独加载到运行时环境中(无论是浏览器还是像Node.js这样的框架)。