我创建了我的节点脚本可执行文件来执行一些任务grunt . 在Windows上,我的节点脚本工作正常 . 但是在Mac OS X(Yosemite)上,它不起作用 .
我的节点脚本已在Windows上发布 .
我的节点脚本是通过npm命令安装的:
npm install -g task-app
我的节点脚本有第一行:
#! /usr/bin/env node
我尝试了很多解决方案来解决我的问题,但我仍然陷入困境 .
以下是我使用的这些解决方案:
-
卸载并重新安装Node.js.
-
执行此命令为节点创建链接:sudo ln -s / usr / bin / nodejs / usr / local / bin / node
-
使用此命令设置我的路径:export PATH = $ PATH:/ usr / local / bin / node
你有其他解决方案吗?
EDIT :
我的脚本的开头:
#! /usr/bin/env node
var grunt = require('grunt');
//Get parameters from command line
var args = process.argv.splice(2);
[...]
5 回答
毕竟,我找到了解决问题的方法 .
由于我的节点脚本文件已在Windows上创建,因此该文件为DOS格式(我认为是DOS格式的行结尾) . 所以,我使用了一个允许将文件转换为unix格式的模块:
你也可以使用vim:
这将确认Unix风格换行符的DOS风格新行 .
脚本中的换行符存在问题 . 确保
#!/usr/bin/env node
后跟\n
(unix样式)而不是\r\n
(windows / dos样式) . 要解决此问题,请使用tr
命令从文件中删除\r
:正如PauloDev上面所说,这是一个Mac / Windows系列结束问题 . 详细说明一下,如果你使用
nvm
,你'll need to locate your script first (in my case I' m使用express-mvc-generator
):这应该不再是一个问题,因为npm@^5.4.0 . npm现在将自动转换为正确的行结尾 . 见https://github.com/npm/npm/issues/12371 .
然而,这仍然是纱线的一个问题:https://github.com/yarnpkg/yarn/issues/5480 .
如果你来到这个页面是因为你在使用纱线代替npm时遇到了这个错误,就像我一样,你可能会考虑使用npm而不是纱线 . 无论如何,无论如何,npm拥有纱线最好的功能(可以说是) .