Javascript node.js模块中的权限问题
我构建了一个名为Javascript node.js模块中的权限问题,javascript,node.js,npm,Javascript,Node.js,Npm,我构建了一个名为emeraldfw的npm模块并发布了它。我的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 a
emeraldfw
的npm模块并发布了它。我的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身份安装吗?你尝试过以su身份安装吗?好吧,这里有个问题 在创建npm模块之前,您需要阅读它的每一行文档 正如上面所说的,您需要使用shebang让您的操作系统知道它应该使用节点而不是操作系统自己的脚本执行主机运行 请确保bin中引用的文件以开头
#/usr/bin/env node
,否则脚本将在没有节点可执行文件的情况下启动
因此,通过在npm模块上使用shebang,您可以告诉操作系统创建特定于平台的可执行文件,让它使用node来运行脚本。例如,Windows上的
.cmd
文件。好吧,这里是shebang问题
在创建npm模块之前,您需要阅读它的每一行文档
正如上面所说的,您需要使用shebang让您的操作系统知道它应该使用节点而不是操作系统自己的脚本执行主机运行
请确保bin中引用的文件以开头
#/usr/bin/env node
,否则脚本将在没有节点可执行文件的情况下启动
因此,通过在npm模块上使用shebang,您可以告诉操作系统创建特定于平台的可执行文件,让它使用node来运行脚本。例如,Windows上的
.cmd
文件。不太可能。因为没有这个模块,所有模块都可以正常工作。考虑到我在自己的用户区域内,No.js模块安装在用户空间中。从我的观点来看,这根本不是必需的。我检查了我的节点二进制文件(emeraldfw.js
)的权限,它属于edvaldo:edvaldo,我的用户和组。并设置了可执行权限。我应该没有权限问题,在我自己的区域内与这些设置,你不认为吗?如果你想全球安装与-g,在linux和mac上,我相信你必须安装为su(超级用户)。顺便说一句,你的代码工作,对吗?不真的。因为没有这个模块,所有模块都可以正常工作。考虑到我在自己的用户区域内,No.js模块安装在用户空间中。从我的观点来看,这根本不是必需的。我检查了我的节点二进制文件(emeraldfw.js
)的权限,它属于edvaldo:edvaldo,我的用户和组。并设置了可执行权限。我应该没有权限问题,在我自己的区域内与这些设置,你不认为吗?如果你想全球安装与-g,在linux和mac上,我相信你必须安装为su(超级用户)。顺便说一句,你的代码工作,对吗?请确保你安装了npm作为当前用户,而不是管理员(sudo)。如果已使用sudo安装了node和npm,则无法以当前用户身份安装全局软件包。另外,请检查此链接:我自己作为当前用户安装了node.js(以及其他npm)。所以这根本不应该是个问题。我会检查你提到的文档,@AliDemirci,谢谢!我检查了npm
,@AliDemirci的权限,它是作为当前用户安装的。我在那里观看了视频,内容是关于使用npm
安装新模块的权限,但事实并非如此。我的模块安装得很好。当我尝试运行它时,我得到了这个错误,@AliPoder.庆幸它成功了!请确保您以当前用户而不是管理员(sudo)的身份安装了npm。如果已使用sudo安装了node和npm,则无法以当前用户身份安装全局软件包。另外,请检查此链接:我自己作为当前用户安装了node.js(以及其他npm)。所以这根本不应该是个问题。我会检查你提到的文档,@AliDemirci,谢谢!我检查了npm
,@AliDemirci的权限,它是作为当前用户安装的。我在那里观看了视频,内容是关于使用npm
安装新模块的权限,但事实并非如此。我的模块安装得很好。当我尝试运行它时,我得到了这个错误,@AliPoder.庆幸它成功了!