2015-06-03 124 views
0

我编写了一个简单的'addheader'节点模块并将其发布到npm上。它包含了我在的package.json配置文件中注册的bin属性如下CLI脚本:npm bin属性未按预期工作

{ 
    "name" : "addheader", 
    "bin" : "./addHeaderCli.js" 
} 

与安装模块“故宫安装的AddHeader”我可以看到CLI脚本在node_modules文件夹如下:

node_modules/.bin/addheader 

不幸的是,我不能按预期使用cli。当像这样运行:

node addheader 'test.txt' 'A header' 

它总是失败,出现以下错误:

Error: Cannot find module '/Users/sepp/camp/npmbuild/addheader' 
at Function.Module._resolveFilename (module.js:336:15) 
at Function.Module._load (module.js:278:25) 
at Function.Module.runMain (module.js:501:10) 
at startup (node 

来看,它提供的路径工作正常:

./node_modules/.bin/addheader 'test.txt' 'A header' 

我请教故宫documentation但我无法弄清楚我做错了什么。

顺便说一下,我在Mac上运行节点版本0.12.4。

你可以找到npmjs https://www.npmjs.com/package/addheader

+0

我通过将以下行添加到cli文件的顶部来解决该问题:'code'#!/usr/bin/env节点。现在我可以像这样调整它:'code'addheader'test.txt''我的标题'代码' –

回答

0

我通过添加以下行addHeaderCli.js顶部解决的问题它像:

addheader 'test.txt' 'my header' 
+0

我不认为这是做这件事的正确方法。 NPM将为你做这个逻辑,如果你有它在bin下,它也会考虑到Windows。你的问题是你在addheader之前调用节点。 – pllee

+0

我现在可以不用'节点'来调用它。感谢提示,我会改变问题中的电话。 –

0

如果你创建你不应该与node它只是一个独立的二进制文件调用它仓模块。

#! /usr/bin/env node 

现在我可以CAL:

因缘

Command not specified. Karma - Spectacular Test Runner for JavaScript.

节点因缘

module.js:338 throw err; Error: Cannot find module