节点脚本可执行文件在Mac上不起作用:env:node \ r:没有这样的文件或目录
我创build了我的节点脚本可执行文件来执行一些任务grunt。 在Windows上,我的节点脚本正常工作。 但在Mac OS X(优胜美地),它不工作。
我的节点脚本已经在Windows上发布。
我的节点脚本是通过npm命令安装的:
npm install -g task-app
我的节点脚本有这第一行:
#! /usr/bin/env node
我尝试了很多解决scheme来解决我的问题,但我仍然陷入困境。
以下是我使用的这些解决scheme:
- 卸载并重新安装Node.js
- 执行这个命令为节点创build一个链接:sudo ln -s / usr / bin / nodejs / usr / local / bin / node
- 使用以下命令设置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风格的换行符。