3

我正在节点中开发一个将发布到 NPM 的 CLI。由于它是一个 CLI 应用程序,我希望它在安装后包含在路径中,因此不需要键入“node my-app.js”来运行它。我希望它只运行“我的应用程序”。

在 package.json 中,我包括:

"bin": { 
    "my-all" : "./my-app.js" 
 },

但这会导致通过 NPM 安装失败并出现此错误

错误:ENOENT,chmod '/home/user1/node_modules/my-app/my-app'

4

1 回答 1

3

假设您使用的是某种 unix(linux、osx),请将这一行放在脚本的顶部:

#!/usr/bin/env node

还要确保将文件设置为可执行文件 ( chmod a+x my-all)。

这应该照顾到需要键入node my-app.js,并且使您能够只键入./my-app.js

至于 npm 打包的东西,我不确定它为什么会失败,但我猜这是 my-app.js 的路径或位置的问题。

如果将可执行脚本放在 PATH 中的任何位置,那么它将像其他任何东西一样运行。如果您运行which npm,您将看到 npm 可执行脚本所在的位置。在我的系统上,大多数节点可执行文件(或可执行的 npm 脚本)进入 /usr/local/bin。我假设您package.json可以将其设置为将其放在路径中的某个位置。如果您需要更改路径,请修改您的.profile,或者您的系统路径。

于 2012-07-21T22:49:09.403 回答