Javascript 在npm链接后找不到命令

Javascript 在npm链接后找不到命令,javascript,node.js,Javascript,Node.js,我有一个小的node.js应用程序“doto”,我想npm链接,这样我就可以在任何地方调用doto。据我所知,我需要做的是: mkdir doto cd doto npm init #call the project doto and entry point doto.js touch doto.js #fill with some code npm link node doto.js工作正常,但是当我链接包并尝试调用doto时,找不到该命令。链接进行得很好,我必须使用sudo(是的,我知道我

我有一个小的node.js应用程序“doto”,我想
npm链接
,这样我就可以在任何地方调用
doto
。据我所知,我需要做的是:

mkdir doto
cd doto
npm init #call the project doto and entry point doto.js
touch doto.js #fill with some code
npm link
node doto.js
工作正常,但是当我链接包并尝试调用
doto
时,找不到该命令。链接进行得很好,我必须使用sudo(是的,我知道我应该以一种不需要sudo的方式设置节点,但现在我只想把脚弄湿)

每当我在全球范围内安装一个软件包时,我都可以很好地调用它

我正在运行MacOS10.10

doto.js

#!/usr/bin/env node

var path = require('path');
var pkg = require( path.join(__dirname, 'package.json') );

var program = require('commander');

program
    .version(pkg.version)
    .option('-p, --port <port>', 'Port on which to listen to (defaults to 3000)', parseInt)
    .parse(process.argv);

console.log(program.port);

我遗漏了什么?

我认为您的
包.json
遗漏了bin部分,应该是这样的:

{
  "name": "doto",
  "version": "0.0.1",
  "description": "",
  "main": "doto.js",
  // specify a bin attribute so you could call your module
  "bin": {
    "doto": "./doto.js"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "commander": "~2.7.1"
  }
}

因此,在您运行了
sudo npm link
之后,您可以从任何地方运行
doto
,如果您想更改可执行文件的名称,只需将“bin”下的键更改为您喜欢的任何键即可。

看,有时我觉得非常愚蠢:)谢谢!我很高兴这有帮助;D请不要忘记上传投票。My package.json没有缺少“bin”部分,但在执行“npm link”之后,我无法在终端中使用该命令
{
  "name": "doto",
  "version": "0.0.1",
  "description": "",
  "main": "doto.js",
  // specify a bin attribute so you could call your module
  "bin": {
    "doto": "./doto.js"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "commander": "~2.7.1"
  }
}