我创建了一个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)
该错误意味着您没有权限在路径
/npm
处使用npm安装任何东西。npm root -g
。这应该返回 /npm
。
请注意,
/npm
不是MacOS上的默认安装路径(请参阅https://stackoverflow.com/a/35638528/1754076)。
检查您的 npm 配置文件并将默认安装路径更改为您有写入权限的路径。您还可以使用 npm 本身来更改默认安装路径。
mv ~/.npmrc ~/.npmrc.old
npm 前缀 -g
这可能有用
就我而言,结果是
cache
文件中的 ~/.npmrc
条目有问题。显然我从事的一个子项目需要这条线:
cache=/build/package_cache/npm
但是当在另一个子项目中运行时,它似乎导致 npm 无法创建
/build
目录。
注释掉该行可以解决该问题。
我在尝试安装软件包时遇到错误
EROFS: read-only file system, mkdir '/.npm'
。
然后我使用
npm config list --json
,发现这条路径唯一使用的是"cache": "/.npm"
。
所以我通过
npm config set cache '/tmp'
更改了缓存,然后安装就成功了。
我在尝试写入文件时遇到了类似的问题,因为文件名前面有一个前导斜杠,因此使用以下行会导致问题:
fs.writeFileSync("/output.txt", JSON.stringify(data), "utf8");
虽然问题在下面的问题中消失了(删除前导斜线后):
fs.writeFileSync("output.txt", JSON.stringify(data), "utf8");
就我而言,我删除了
~/.local/lib
,然后重新运行 npm install -g
命令。不再有错误。