首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在package.json中包含模块安装参数

在package.json中包含模块安装参数
EN

Stack Overflow用户
提问于 2017-09-11 22:20:41
回答 1查看 474关注 0票数 1

我使用的是节点serialport库,需要使用--unsafe-perm--build-from-source参数进行安装。我只希望在安装serialport时使用这些参数。如果我在命令行上运行以下命令,它就能正常工作:

代码语言:javascript
复制
sudo npm install serialport@5.0.0 --unsafe-perm --build-from-source

基于this post,我的理解是通过使用preinstall脚本来完成,如下所示:

代码语言:javascript
复制
"preinstall": "sudo npm install serialport@5.0.0 --unsafe-perm --build-from-source"

然而,当我运行它时,我得到了以下错误:

代码语言:javascript
复制
npm ERR! Error: EACCES: permission denied, mkdir '/Users/test/node_modules/.staging'
npm ERR!     at Error (native)
npm ERR!  { Error: EACCES: permission denied, mkdir '/Users/test/node_modules/.staging'
npm ERR!     at Error (native)
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/Users/test/node_modules/.staging' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

那么,尽管我在命令中指定了sudo,但它并没有作为根事件运行?

如何使用这些标志通过package.json安装serialport

EN

回答 1

Stack Overflow用户

发布于 2017-09-12 13:10:42

好吧,我花了一段时间才弄明白,但我想我现在明白了。

事实证明,当您有一个包含以根用户身份执行的preinstallpostinstall脚本的package.json文件时,npm将以减少的权限运行此脚本。您必须包含--unsafe-perms标志,才能让它以根用户身份执行脚本。所以长话短说,你需要运行

代码语言:javascript
复制
sudo npm i --unsafe-perm

或者,您可以使用以下条目创建.npmrc文件:

代码语言:javascript
复制
unsafe-perm = true

如果使用.npmrc路由,则不必在命令行中指定--unsafe-perm

当然,只有当您以根用户身份运行npm i时,才需要执行所有这些操作,这并不安全。因此,如果您创建了一个常规用户,并为他们提供了直接安装软件包的完全访问权限,则不必担心--unsafe-perm

至于--build-from-source,你也不必担心这一点,因为当electron-rebuild意识到它无法为你的环境下载合适的包时,它会为你构建它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46157964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档