对于我的Sails项目,我需要CoffeeScript 2.x.这就是我所做的:
npm install coffeescript@next --save
packages.json
在我的依赖项中显示以下内容:
"dependencies": {
"coffeescript": "^2.0.0-beta2",
// ...
当我手动编译控制器时:
node-modules/.bin/coffee -c api/controllers/MyController.coffee
我得到了正确的输出。但是,当我启动Sails(node --inspect app.js
)时,我可以在调试器中看到控制器是使用较旧版本的coffeescript编译的。这怎么可能,因为2.0.0-beta2是唯一安装的版本?
如何让Sails使用正确版本的CoffeeScript?
答案 0 :(得分:0)
拉出我的大部分头发后,我终于得到了一些有效的东西。然而,这不是一个理想的解决方案,所以欢迎更好的想法。
grunt-contrib-coffee
,编辑其package.json
以依赖我需要的CoffeeScript版本。grunt
并进行类似的修改。sails
并编辑相关分支以更新依赖关系,现在将其指定为github:mssever/grunt
和github:mssever/grunt-contrib-coffee
。还有一个直接的coffeescript依赖更新。package.json
以反映上述依赖关系。sails
并手动删除myproject/node-modules
下的符号链接,否则您将收到难以理解的权限错误。npm update
。如果你需要进一步更新,甚至不要考虑将会发生什么,因为这将是一个真正的头痛。答案 1 :(得分:0)
如果在全局和sails node_modules目录中将coffeescript链接到coffee-script,也可以使其正常工作。它仍然是一个黑客,但可能会减少工作量。
这里的确切说明是逐步说明:
1)使用npm -g全局安装coffeescript和sails,将它们放在目录/ usr / local / lib / node_modules /
中npm install -g coffeescript
npm install -g sails
2)进入安装目录并将coffeescript链接到coffee-script
cd /usr/local/lib/node_modules/coffeescript
ln -s coffeescript coffee-script
3)进入sails node_modules目录,将coffee-script重命名为其他名称,并将名称链接到全局coffeescript
cd /usr/local/lib/node_modules/sails/node_modules
mv coffee-script coffee-script-old
ln -s /usr/local/lib/node_modules/coffeescript coffee-script
这对我来说似乎很有用,我最终可以在我的coffeescript中使用async / await而不会刮起风帆,但我有兴趣找到正确的解决方案。