在npm链接后找不到命令
Command not found after npm link
我有一个小的node.js应用程序"doto",我想要npm link
,这样我就可以在任何地方调用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
{
"name": "doto",
"version": "0.0.1",
"description": "",
"main": "doto.js",
"scripts": {
"test": "echo '"Error: no test specified'" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"commander": "~2.7.1"
}
}
我错过了什么?
我认为您的package.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"下的键更改为您喜欢的任何键即可。
我尝试了npm link
,但它在我的测试包中仍然不起作用。
链接包中的package.json
具有"directories": { "bin": "./bin" }
,而不是"bin": { "etc": "./etc.js" }
。
一旦我把它改回"bin": {...}
,它就开始在测试包中工作了。
因此,尽管directories: { bin: ... }
设置有文档记录,但它似乎无法正确使用npm link
。
相关文章:
- 气质的“nestRemoting()”有时可以'找不到关系
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 找不到模块捆绑包
- for循环中的javascript if语句找不到==
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 在npm链接后找不到命令
- 无法通过 npm 脚本“babel:找不到命令”运行 babel
- js2coffee:找不到命令
- 咕噜找不到指南针命令.为什么不呢
- 嘟囔声.js安装问题 - 找不到命令
- Express:找不到命令和未满足依赖项
- 错误:找不到控制台中所有 Meteor 命令的模块“下划线”
- -bash express:找不到命令
- 使用 npm 命令时找不到模块“npmlog”错误消息
- phantomjs:找不到命令
- 找不到名称'承诺'当我使用'npm启动'命令
- 环回错误:找不到模型:Book:当我使用命令创建新模型后尝试运行时
- 节点模块时间戳问题注释“找不到命令”
- Grunt服务器:终端中找不到命令