重新安装 Node.js 后,npm 出现问题

9

我最近在电脑上重新安装了node.js(最新版本9.8.0),因为它开始出现故障。

问题是,现在npm无法工作。例如,在cmd中输入npm后,我会收到以下错误信息:

Error: EPERM: operation not permitted, mkdir 'C:\Program Files (x86)\Nodist'
TypeError: Cannot read property 'get' of undefined
    at errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:205:18)
    at C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js:83:20
    at cb (C:\Program Files\nodejs\node_modules\npm\lib\npm.js:224:22)
    at C:\Program Files\nodejs\node_modules\npm\lib\npm.js:262:24
    at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:81:7
    at Array.forEach (<anonymous>)
    at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:80:13
    at f (C:\Program Files\nodejs\node_modules\npm\node_modules\once\once.js:25:25)
    at afterExtras (C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:178:20)
    at C:\Program Files\nodejs\node_modules\npm\node_modules\mkdirp\index.js:35:29
    at C:\Program Files\nodejs\node_modules\npm\node_modules\mkdirp\index.js:47:53
    at C:\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\polyfills.js:284:29
    at FSReqWrap.oncomplete (fs.js:170:21)
C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:205
  if (npm.config.get('json')) {
                 ^

TypeError: Cannot read property 'get' of undefined
    at process.errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:205:18)
    at process.emit (events.js:180:13)
    at process._fatalException (bootstrap_node.js:431:27)
Error: EPERM: operation not permitted, mkdir 'C:\Program Files (x86)\Nodist'
TypeError: Cannot read property 'get' of undefined
    at errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:205:18)
    at C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js:83:20
    at cb (C:\Program Files\nodejs\node_modules\npm\lib\npm.js:224:22)
    at C:\Program Files\nodejs\node_modules\npm\lib\npm.js:262:24
    at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:81:7
    at Array.forEach (<anonymous>)
    at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:80:13
    at f (C:\Program Files\nodejs\node_modules\npm\node_modules\once\once.js:25:25)
    at afterExtras (C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:178:20)
    at Conf.<anonymous> (C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:234:20)
    at C:\Program Files\nodejs\node_modules\npm\lib\config\set-user.js:23:20
    at C:\Program Files\nodejs\node_modules\npm\node_modules\mkdirp\index.js:35:29
    at C:\Program Files\nodejs\node_modules\npm\node_modules\mkdirp\index.js:47:53
    at C:\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\polyfills.js:284:29
    at FSReqWrap.oncomplete (fs.js:170:21)
C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:205
  if (npm.config.get('json')) {
                 ^

TypeError: Cannot read property 'get' of undefined
    at process.errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:205:18)
    at process.emit (events.js:180:13)
    at process._fatalException (bootstrap_node.js:431:27)

节点命令运行良好,但是为什么会发生这种情况?
编辑:我尝试恢复推荐的Node.js版本(8.10.0),但是我遇到了相同的问题。
3个回答

14

我之前也遇到过类似的问题。尝试导航到名为.npmrc的文件,在C:\Users\%UserName%中,然后将其删除。


1
就这样了 - 谢谢! - user8887068
在我的情况下,我实际上没有 .npmrc 文件,无论是在用户目录中还是在应用程序数据的 npm 文件夹中都没有。这个 对我有用。 - Saif

3
要在 Windows 中解决此问题,请创建指向用户文件夹的目录链接,其中没有空格。您可以在管理员 PowerShell 中运行像这样的命令:
cmd /c mklink /J "C:\Users\myname" "C:\Users\My Name"

您可以将此连接用作您真实的用户目录:

npm config set cache C:\Users\myname\AppData\Roaming\npm-cache

npm config set prefix C:\Users\myname\AppData\Roaming\npm

(以上内容应该更新您的用户 .npmrc 文件)

这实际上非常聪明,我在解决我的问题后才读到这篇文章,所以对于任何未来的漫游者,如果以上解决方案对您无效,这个 对我有用。 - Saif

1
这可能与需要清理的NPM缓存有关,您可以使用以下方式进行清理:
    npm cache clean

请告诉我它是否有帮助...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接