node.js - CLI 与 nodejs

标签 node.js command-line-interface npm

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

在 package.json 中,我包括:

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

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

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

最佳答案

假设您使用的是某种 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 可执行脚本所在的位置。在我的系统上,大多数 Node 可执行文件(或可执行的 npm 脚本)进入/usr/local/bin。我假设您的 package.json 可以设置为将其放在路径中的某个位置。如果您需要更改路径,请修改您的 .profile,或者您的系统路径。

关于node.js - CLI 与 nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596420/

相关文章:

node.js - npm 发布原因 'Error: EPERM: operation not permitted, unlink ...' , errno -4048

node.js - 创建适用于 Mac 的 Node Js 可执行应用程序

php - argparse 像 PHP 的 lib?

javascript - 在 JavaScript 中读取包含 32 位 float 的二进制文件

使用 cPanel 运行 CentOS 的 VPS 服务器上的 PHP CLI "Out of memory"错误

php - 如何在 PHP 中运行 ffmpeg 命令

javascript - 找不到模块 : Can't resolve 'autosuggest-highlight/match'

javascript - require ('react-native' ).NativeModules 是一个空对象

node.js - Docker buildx 与 Apple M1 芯片上的 Node 应用程序 - standard_init_linux.go :211: exec user process caused "exec format error

node.js - 如何优化 Promise 以避免回调/Promise hell