node.js - 在 package.json 中包含模块安装参数

标签 node.js npm serial-port

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

sudo npm install serialport@5.0.0 --unsafe-perm --build-from-source

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

"preinstall": "sudo npm install serialport@5.0.0 --unsafe-perm --build-from-source"

但是,当我运行该命令时,出现以下错误:

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

最佳答案

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

事实证明,当您有一个 package.json 文件,其中包含您以 root 身份执行的 preinstallpostinstall 脚本时, npm 将以减少的权限运行它。您必须包含 --unsafe-perms标志让它以 root 身份执行脚本。所以长短就是你需要跑

sudo npm i --unsafe-perm

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

unsafe-perm = true

如果您选择 .npmrc 路线,则不必在命令行上指定 --unsafe-perm

当然,所有这些只有当您以 root 身份运行 npm i 时才需要,这并不安全。因此,如果您创建一个普通用户并授予他们直接在其中安装软件包的完全访问权限,则不必担心 --unsafe-perm

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

关于node.js - 在 package.json 中包含模块安装参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157964/

相关文章:

java - 我可以使用 jssc 与虚拟串行设备通信吗? ttyS0 配置问题 (Ubuntu)

javascript - 使用 node.js 进行音频处理

node.js - 耐克斯 :Error Pool2 - Error: The server does not support SSL connections

node.js - 像Instagram一样使用mongodb和node js的社交网络

npm - 如何为自己的 npm 注册表配置 save-prefix

npm - 在 Prestashop 1.7 中安装 Webpack : package. json => 没有这样的文件

通过 github 发布的 npm 包未出现在 npm 模块搜索中

c - 串口通讯中换行字符的意义

java - 是否有支持 Telnet RFC2217(通过网络连接与 COM 端口通信)的 Java 客户端?

node.js - 如何使用 GraphQL 按 slug 进行搜索? - "Unknown argument\"slug\"on field\"文章\"