2017-09-30 47 views
0

我嘗試創建一個簡單的node.js命令行工具來解決這個問題。我正在關注這個tutorial。使用npm init,我創建了一個名爲lb-model-discovery的項目。這是的package.jsonNode.js命令行工具在記事本中打開而不是正在執行

{ 
    "name": "lb-model-discovery", 
    "version": "1.0.0", 
    "description": "loopback model discovery command line tool", 
    "main": "index.js", 
    "bin" :{ 
     "lb-discover":"./index.js" 
    }, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "seya obey", 
    "license": "ISC" 
} 

的內容和這是index.js的在項目的根目錄(很簡單)內容:

console.log('hello world'); 

之後,我從內執行該命令(由上面的教程建議)的文件夾:

npm install -g 

這正確地安裝我工具作爲一個全球節點的命令行模塊。進入我係統中的節點模塊全局存儲庫(Windows),我可以看到這是在npm文件夾中創建的文件:lb-discover.cmd。這裏是它的內容:

@"%~dp0\node_modules\lb-model-discovery\index.js" %* 

但現在當我運行在命令行提示符的新工具:

$ lb-discover 

,而不是在控制檯中顯示「Hello World」的消息,它會打開記事本而只是顯示index.js文件的內容。

我在做什麼錯?我如何執行我的自定義node.js命令行?

任何幫助將不勝感激。

+0

嘗試解除文件擴展名.js與記事本打開:右鍵單擊文件屬性打開與取消選中記事本,我希望這可以幫助。 –

+0

感謝您的回答。但是,通過「取消鏈接」文件擴展名是什麼意思?其他命令行工具在同一文件夾中工作正常 – TheSoul

+0

右鍵單擊文件>屬性>打開與>取消選中記事本,我希望這有助於 –

回答

0

我能夠通過修改lb-discover.cmd從這個內容來解決這個問題:

@"%~dp0\node_modules\lb-model-discovery\index.js" %* 

這樣:

@IF EXIST "%~dp0\node.exe" (
    "%~dp0\node.exe" "%~dp0\node_modules\lb-model-discovery\index.js" %* 
) ELSE (
    @SETLOCAL 
    @SET PATHEXT=%PATHEXT:;.JS;=;% 
    node "%~dp0\node_modules\lb-model-discovery\index.js" %* 
) 

我的問題是,爲什麼在第一時間執行npm install -g,產生錯誤的腳本?

相關問題