节点 package.json“bin”值,命令不起作用

SVA*_*ERG 16 json node.js npm package.json

我在我的虚拟服务器上使用nodejs制作了一个小脚本来管理数据库中的用户。

在 package.json 中,我添加了“bin”并将其设置为我的脚本。我的尝试是使命令在整个服务器上可用,因此我不需要转到脚本所在的目录并编写“node usermanager.js”。

我使用了 npm link ,它似乎工作正常:

/home/sl4yer/bin/cl9wnhook -> /home/sl4yer/lib/node_modules/cl9wnhook_usermanager/usermanager.js
/home/sl4yer/lib/node_modules/cl9wnhook_usermanager -> /home/sl4yer/cl9wnHook/usermanager
Run Code Online (Sandbox Code Playgroud)

顺便说一句,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"
  }
}
Run Code Online (Sandbox Code Playgroud)

所以使用命令“cl9wnhook”应该可以。

但是当我调用它时,我得到:

[sl4yer@lynx usermanager]$ cl9wnhook
: No such file or directory
Run Code Online (Sandbox Code Playgroud)

任何想法?

小智 15

sudo npm link
Run Code Online (Sandbox Code Playgroud)

我做到了,并且成功了。


Pan*_*war 5

尝试添加

#!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)

在 usermanager.js 文件的顶部。它应该有效。