节点 package.json “bin” 值,命令不起作用
Posted
技术标签:
【中文标题】节点 package.json “bin” 值,命令不起作用【英文标题】:Node package.json "bin" value, command not working 【发布时间】:2017-03-26 11:42:02 【问题描述】:我在我的虚拟服务器上使用 nodejs 制作了一个小脚本来管理数据库中的用户。
在 package.json 中,我添加了“bin”并将其设置到我的脚本中。我的尝试是让一个命令在整个服务器上可用,所以我不需要去脚本所在的目录并编写“node usermanager.js”。
我使用了 npm 链接,它似乎工作正常:
/home/sl4yer/bin/cl9wnhook -> /home/sl4yer/lib/node_modules/cl9wnhook_usermanager/usermanager.js
/home/sl4yer/lib/node_modules/cl9wnhook_usermanager -> /home/sl4yer/cl9wnHook/usermanager
package.json 顺便说一句是:
"name": "cl9wnhook_usermanager",
"version": "1.0.0",
"description": "User manager for cl9wnHook",
"main": "usermanager.js",
"scripts":
"test": "echo \"Error: no test specified\" && exit 1"
,
"bin":
"cl9wnhook": "./usermanager.js"
,
"author": "",
"license": "ISC",
"dependencies":
"commander": "^2.9.0",
"js-sha512": "^0.2.2",
"readline-sync": "^1.4.5"
所以使用命令“cl9wnhook”应该可以工作。
但是当我调用它时,我得到:
[sl4yer@lynx usermanager]$ cl9wnhook
: No such file or directory
有什么想法吗?
【问题讨论】:
This 可以帮助你。 这不正是我所做的吗?]~/bin/cl9wnhook
有效吗?
Nope :( 同样的错误。似乎该命令已注册但未找到该文件 :(
你有什么解决办法吗?我也面临同样的问题。
【参考方案1】:
从您的项目目录:npm install -g
【讨论】:
做到了。没有这样的文件或目录。【参考方案2】:sudo npm link
我做到了,并且成功了。
【讨论】:
【参考方案3】:打包
npm pack
然后全局安装它以从任何文件夹运行它。
npm install --global <package_file>.tgz
【讨论】:
【参考方案4】:在使用 NPM 或 Yarn 时,确实有时会出现问题。在这些情况下,请先进行完整的全新安装。
rm -rf ./node_modules
yarn install
npm install
如果这不能解决您的问题,请检查package.json
中的bin
属性,它是否正确映射到cli 文件?
您可以通过运行yarn pack
来检查打包的内容。
【讨论】:
【参考方案5】:尝试添加
#!/usr/bin/env node
在您的 usermanager.js 文件的顶部。它应该可以工作。
【讨论】:
是的,添加到打字稿文件后工作【参考方案6】:您是否检查过您的入口点的路径是否正确?我刚刚遇到了同样的问题,我的问题是我没有正确放置路径。
【讨论】:
【参考方案7】:你的bin
在你的package.json
中像这样:
"bin":
"app": "bin/app"
,
但首先在您的app
文件中,您应该在顶部添加此#!/usr/bin/env node
注意
This will help you
【讨论】:
以上是关于节点 package.json “bin” 值,命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章