2015-06-03 71 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