节点全局安装错误
Node Global Install Error
我正在尝试制作一个 Node 模块,当与 -g
一起安装时,将 运行 通过来自终端的单个命令。
所有教程都非常简单明了,所以我不知道我错过了什么。这是我所做的:
Package.json:
...
"bin": {
"myapp": "./lib/myapp.js"
},
...
npm publish
npm install -g myapp
然后我尝试 运行 全局:
$ myapp
然后我收到一大堆错误,老实说,它在读取我的应用程序(一个 JS 文件)时试图 运行 一个 bash 脚本。这是输出:
$ myapp
.../io.js/v2.0.2/bin/myapp: line 1: $'\r': command not found
.../io.js/v2.0.2/bin/myapp: line 2: /**
.../io.js/v2.0.2/bin/myapp: line 3: package.json: command not found
.../io.js/v2.0.2/bin/myapp: line 4: */
.../io.js/v2.0.2/bin/myapp: line 5: $'\r': command not found
.../io.js/v2.0.2/bin/myapp: line 6: `var _ = require('lodash')
$
看 - 看起来它并没有试图解释 JS。这是我的 JS 文件的 header 它试图 运行:
/**
* Module dependencies
*/
var _ = require('lodash')
不确定我做错了什么,但我在网上找不到其他人遇到这个问题。
See - it looks like its not trying to interpret JS.
对,"binary" 应该是 shell 脚本。你仍然可以用 JS 编写它,你只需要告诉 shell 使用哪个解释器。例如。你可以添加
#!/usr/bin/env node
到文件的顶部,它告诉 shell 使用 node
来解释脚本的其余部分。
npm
将符号链接添加到您识别的文件,以便它出现在您的路径中。所以在这种情况下,它实际上是在尝试像执行任何脚本一样执行文件。你需要添加一个#!行到文件,这样你的 shell 知道如何执行它。
例如:
#!/usr/bin/env node
/**
* Module dependencies
*/
var _ = require('lodash')
#!
行在 Windows 上尤为重要,因为 npm 会查找它并创建适当的 .bat
文件包装器,该文件包装器知道如何 运行 您的脚本节点环境。
我正在尝试制作一个 Node 模块,当与 -g
一起安装时,将 运行 通过来自终端的单个命令。
所有教程都非常简单明了,所以我不知道我错过了什么。这是我所做的:
Package.json:
...
"bin": {
"myapp": "./lib/myapp.js"
},
...
npm publish
npm install -g myapp
然后我尝试 运行 全局:
$ myapp
然后我收到一大堆错误,老实说,它在读取我的应用程序(一个 JS 文件)时试图 运行 一个 bash 脚本。这是输出:
$ myapp
.../io.js/v2.0.2/bin/myapp: line 1: $'\r': command not found
.../io.js/v2.0.2/bin/myapp: line 2: /**
.../io.js/v2.0.2/bin/myapp: line 3: package.json: command not found
.../io.js/v2.0.2/bin/myapp: line 4: */
.../io.js/v2.0.2/bin/myapp: line 5: $'\r': command not found
.../io.js/v2.0.2/bin/myapp: line 6: `var _ = require('lodash')
$
看 - 看起来它并没有试图解释 JS。这是我的 JS 文件的 header 它试图 运行:
/**
* Module dependencies
*/
var _ = require('lodash')
不确定我做错了什么,但我在网上找不到其他人遇到这个问题。
See - it looks like its not trying to interpret JS.
对,"binary" 应该是 shell 脚本。你仍然可以用 JS 编写它,你只需要告诉 shell 使用哪个解释器。例如。你可以添加
#!/usr/bin/env node
到文件的顶部,它告诉 shell 使用 node
来解释脚本的其余部分。
npm
将符号链接添加到您识别的文件,以便它出现在您的路径中。所以在这种情况下,它实际上是在尝试像执行任何脚本一样执行文件。你需要添加一个#!行到文件,这样你的 shell 知道如何执行它。
例如:
#!/usr/bin/env node
/**
* Module dependencies
*/
var _ = require('lodash')
#!
行在 Windows 上尤为重要,因为 npm 会查找它并创建适当的 .bat
文件包装器,该文件包装器知道如何 运行 您的脚本节点环境。