节点脚本可执行文件在Mac上不起作用:env:node \ r:没有这样的文件或目录

我创build了我的节点脚本可执行文件来执行一些任务grunt。 在Windows上,我的节点脚本正常工作。 但在Mac OS X(优胜美地),它不工作。

我的节点脚本已经在Windows上发布。

我的节点脚本是通过npm命令安装的:

npm install -g task-app 

我的节点脚本有这第一行:

 #! /usr/bin/env node 

我尝试了很多解决scheme来解决我的问题,但我仍然陷入困境。

以下是我使用的这些解决scheme:

  1. 卸载并重新安装Node.js
  2. 执行这个命令为节点创build一个链接:sudo ln -s / usr / bin / nodejs / usr / local / bin / node
  3. 使用以下命令设置path:export PATH = $ PATH:/ usr / local / bin / node

你有其他解决schemebuild议吗?

编辑:

我的脚本的开始:

 #! /usr/bin/env node var grunt = require('grunt'); //Get parameters from command line var args = process.argv.splice(2); [...] 

毕竟,我find了解决我的问题。

由于我的节点脚本文件已在Windows上创build,该文件是DOS格式(我认为DOS格式的行结尾)。 所以,我使用了一个允许将文件转换为unix格式的模块:

 brew install dos2unix sudo dos2unix /usr/local/lib/node_modules/task-app/src/task-app.js 

脚本中的换行符有问题。 确保#!/usr/bin/env node之后是\n (unix风格),而不是\r\n (windows / dos风格)。 要解决这个问题,请使用tr命令从文件中删除\r

 cat your_script.js | tr -d '\r' > fixed_script.js 

你也可以使用vim:

 vim script :se ff=unix :wq 

这将确认DOS风格的换行符到Unix风格的换行符。