[英]Issue with permissions in a node.js module
我構建了一個名為emeraldfw
的npm模塊並將emeraldfw
發布。 我的package.json
文件是
{
"name": "emeraldfw",
"version": "0.6.0",
"bin": "./emeraldfw.js",
"description": "Emerald Framework is a language-agnostig web development framework, designed to make developer's lives easier and fun while coding.",
"main": "emeraldfw.js",
"directories": {
"example": "examples",
"test": "test"
},
"scripts": {
"test": "mocha"
},
"repository": {
"type": "git",
"url": "git+https://github.com/EdDeAlmeidaJr/emeraldfw.git"
},
"keywords": [
"web",
"development",
"framework",
"language",
"agnostic",
"react"
],
"author": "Ed de Almeida",
"license": "MIT",
"bugs": {
"url": "https://github.com/EdDeAlmeidaJr/emeraldfw/issues"
},
"homepage": "https://github.com/EdDeAlmeidaJr/emeraldfw#readme",
"devDependencies": {
"jshint": "^2.9.4",
"mocha": "^3.3.0"
},
"dependencies": {
"jsonfile": "^3.0.0",
"react": "^15.5.4",
"vorpal": "^1.12.0"
}
}
如您所見,我聲明了一個"bin": "./emeraldfw.js"
二進制文件,它對應於應用程序本身。 package.json
文檔說這將在node.js bin /目錄下創建指向應用程序可執行文件的鏈接。 這個工作正常,但是當我全局安裝它( npm install emeraldfw -g
)然后從命令行運行它時,我收到錯誤消息
所有其他節點模塊都運行良好,並且我的應用程序通過了所有測試,當我直接在開發目錄(帶有node emeraldfw.js
)中運行它時,它確實運行良好。
我不是node.js專家,並且在解決此錯誤兩天之后,在這里尋求幫助。
有任何想法嗎?
編輯:
我檢查了我的節點二進制文件(emeraldfw.js)的權限,該權限屬於edvaldo:edvaldo,即我的用戶和組。 並且它具有可執行權限設置。 使用這些設置,在我自己的區域內應該沒有權限問題,您不覺得嗎?
您是否嘗試以su身份安裝?
好吧,shebang問題在這里。
在創建npm模塊之前,您需要閱讀其文檔的每一行。
如此處所述,您需要使用shebang來讓您的操作系統知道它應該與節點一起運行,而不是操作系統自己的腳本執行主機。
請確保bin中引用的文件以
#!/usr/bin/env node
開頭,否則腳本將在沒有節點可執行文件的情況下啟動!
因此,通過在npm模塊上使用shebang,您可以告訴os創建平台特定的可執行文件,從而使其可以使用node運行腳本。 例如,Windows上的.cmd
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.