NPM 错误:错误:EROFS:只读文件系统,mkdir '/npm'

问题描述 投票:0回答:6

我创建了一个index.js、index.html和package.json文件,我想添加express。当我在终端中写入“npm installexpress”时,出现以下错误。到目前为止,我尝试了“sudo npm install -gexpress”,完全删除节点和npm并重新安装。我还在这里遇到了其他问题,但没有一个对我有用。无论我用 npm 写什么,我都会遇到同样的错误。 (我使用的是 macOS)

您有什么建议吗?

这是我收到的错误:

Error: EROFS: read-only file system, mkdir '/npm'

TypeError: Cannot read property 'loaded' of undefined

    at exit (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:97:27)

    at errorHandler (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:216:3)

    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:78:20

    at cb (/usr/local/lib/node_modules/npm/lib/npm.js:225:22)

    at /usr/local/lib/node_modules/npm/lib/npm.js:263:24

    at /usr/local/lib/node_modules/npm/lib/config/core.js:81:7

    at Array.forEach (<anonymous>)

    at /usr/local/lib/node_modules/npm/lib/config/core.js:80:13

    at f (/usr/local/lib/node_modules/npm/node_modules/once/once.js:25:25)

    at afterExtras (/usr/local/lib/node_modules/npm/lib/config/core.js:171:20)

/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:97

  var doExit = npm.config.loaded ? npm.config.get('_exit') : true

                          ^

TypeError: Cannot read property 'loaded' of undefined

    at exit (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:97:27)

    at process.errorHandler (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:216:3)

    at process.emit (events.js:223:5)

    at process._fatalException (internal/process/execution.js:150:25)
node.js npm permissions
6个回答
10
投票

该错误意味着您没有权限在路径

/npm
处使用npm安装任何东西。
要验证此运行
npm root -g
。这应该返回
/npm

请注意,

/npm
不是MacOS上的默认安装路径(请参阅https://stackoverflow.com/a/35638528/1754076)。

检查您的 npm 配置文件并将默认安装路径更改为您有写入权限的路径。您还可以使用 npm 本身来更改默认安装路径


1
投票

mv ~/.npmrc ~/.npmrc.old

npm 前缀 -g

这可能有用


1
投票

就我而言,结果是

cache
文件中的
~/.npmrc
条目有问题。显然我从事的一个子项目需要这条线:

cache=/build/package_cache/npm

但是当在另一个子项目中运行时,它似乎导致 npm 无法创建

/build
目录。

注释掉该行可以解决该问题。


1
投票

我在尝试安装软件包时遇到错误

EROFS: read-only file system, mkdir '/.npm'

然后我使用

 npm config list --json
,发现这条路径唯一使用的是
"cache": "/.npm"

所以我通过

npm config set cache '/tmp'
更改了缓存,然后安装就成功了。


0
投票

我在尝试写入文件时遇到了类似的问题,因为文件名前面有一个前导斜杠,因此使用以下行会导致问题:

fs.writeFileSync("/output.txt", JSON.stringify(data), "utf8");

虽然问题在下面的问题中消失了(删除前导斜线后):

fs.writeFileSync("output.txt", JSON.stringify(data), "utf8");

-1
投票

就我而言,我删除了

~/.local/lib
,然后重新运行
npm install -g
命令。不再有错误。

© www.soinside.com 2019 - 2024. All rights reserved.