错误:在使用Ionic时找不到模块“../lib/utils/unsupported.js”

308

每次我运行 "Ionic start 项目名称" 命令时,都会收到以下错误信息:

错误信息

Running command - failed![ERROR] An error occurred while running npm install (exit code 1):

    module.js:471
        throw err;
        ^

    Error: Cannot find module '../lib/utils/unsupported.js'
        at Function.Module._resolveFilename (module.js:469:15)
        at Function.Module._load (module.js:417:25)
        at Module.require (module.js:497:17)
        at require (internal/module.js:20:19)
        at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
        at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:79:3)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)

1
相对路径错误。 - Subburaj
请检查./bash_profile中的路径。 - Mohan Gopi
在MacOS上,从http://nodejs.org重新安装可以帮助查看https://dev59.com/Jmgu5IYBdhLWcg3wfHI_#12313655的赞数。 - Wolfgang Fahl
如果您已经配置了构建脚本,请尝试运行“npm run build”,然后再运行“npm start”。 - Varun
22个回答

843

尝试删除/usr/local/lib/node_modules/npm,然后重新安装Node。这应该可以解决问题。

在使用Homebrew的MacOS上:

sudo rm -rf /usr/local/lib/node_modules/npm
brew reinstall node

14
如果您正在使用Homebrew,您可以使用以下命令: brew uninstall --force nodebrew install node - Nico
16
@Nico 第一条命令有一个错别字。正确的写法是 brew uninstall --force node - Jayant Bhawal
11
为什么会发生这种情况? - Gaurav Paliwal
4
执行上述命令后,现在出现 >> -bash:/usr/local/bin/npm:没有那个文件或目录。 - Tarun
1
在我的情况下,只需要执行 yarn cache clean 命令(可能是由于从1.9升级到1.14导致的)。 - Leo
显示剩余5条评论

85

我按照之前的答案重新安装了node,但是我遇到了这个错误。

警告:后置安装步骤未能成功完成。您可以使用brew postinstall node再次尝试。

所以我运行了这个命令。

sudo chown -R $(whoami):admin /usr/local/lib/node_modules/

然后奔跑了

brew postinstall node

1
或者你可以运行sudo chown -R $(whoami)$(brew --prefix)/*。 - PathToLife

28

我曾经遇到同样的错误,现在已经解决了。

首先确保你使用的是最新版本。

brew update

删除之前的Node实例:

brew uninstall node

然后重新安装最新版本:

brew install node

然后确保如果还没有在 /usr/local 中使用符号链接,将其链接到那里。如果尚未链接,您将收到一个错误提示以完成此步骤。

brew link --overwrite node 

还有关于如何安装/升级node的更多细节,也可以找到.


12
如果你的系统中有yarn,你可以使用 brew uninstall --ignore-dependencies node 命令卸载 Node.js。请注意,此命令将忽略与其他软件包的依赖关系。 - Sound Blaster

19

在 Mac OS X(10.12.6)上,我通过以下步骤解决了这个问题:

brew uninstall --force node
brew install node

接着我收到了一个错误,指出节点的后安装失败,并提示重新运行brew postinstall node

接着我收到了一个错误:

permission denied @ rb_sysopen /usr/local/lib/node_modules/npm/bin/npx

我通过以下方式解决了这个错误:

sudo chown -R $(whoami):admin /usr/local/lib/node_modules

现在我不再遇到这个错误了。


1
我不得不重复这个过程几次,对于需要创建的不同文件夹或需要更改所有权(到我的用户)的文件夹。每次我都会运行 brew postinstall node 来查找下一个问题,修复它,然后重复此过程。 - T. Kim Nguyen

10

错误信息 Cannot find module '../lib/utils/unsupported.js' 是由于在 ./lib/node_modules/npm/bin/npm-cli.js 中使用了 require('../lib/utils/unsupported.js').

根据 Node.js 的 require 文档,所需的模块是相对于文件搜索的,因为它以 ../ 开头。

因此,如果我们从 ./lib/node_modules/npm/bin/npm-cli.js 开始,取相对路径 ../lib/utils/unsupported.js,则所需的模块必须位于 ./lib/node_modules/npm/lib/utils/unsupported.js。 如果不在那里,我看到以下两个选项:

  • 安装可能已损坏,此时 Vincent Ducastel 的回答建议重新安装 node
  • npm不是指向./lib/node_modules/npm/bin/npm-cli.js的符号链接。这是导致我的设置出错的原因。如果调用npm,它通常会在PATH环境变量列出的目录中搜索。它可能位于./bin中。但是,在./bin目录中的npm应该只是指向前面提到的./lib/node_modules/npm/bin/npm-cli.js的符号链接。如果它不是一个符号链接,而是直接包含代码,则在安装过程的某个位置,符号链接被替换为文件本身。在这种情况下,重新创建符号链接即可:cd ./bin; rm npm; ln -s ../lib/node_modules/npm/bin/npm-cli.js npm(更新:命令已修复,谢谢 @massimo)

所有建议检查NODE_PATHnpmrc配置的答案都应该被忽略,因为在相对搜索模块时不考虑它们。


我曾经遇到过类似的问题,即符号链接错误或缺失,但实际上重新创建的语法是:ln -s ../lib/node_modules/npm/bin/npm-cli.js npm - Massimo

10

如果你正在使用“n”库@https://github.com/tj/n,请执行以下操作

  echo $NODE_PATH
如果节点路径为空,则
sudo n latest    - sudo is optional depending on your system

使用 n 切换 Node.js 版本后,npm 可能无法正常工作。

curl -0 -L https://npmjs.com/install.sh | sudo sh
echo NODE_PATH

现在你应该能看到你的 Node 路径了。否则,可能是其他问题导致的。


8
如前所述。
 sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node

7

我尝试了所有之前/较旧的Brew安装答案,但都无法在我的笔记本电脑上工作。

只有以下方法可以解决我的问题。

1)运行以下命令:

sudo rm -rf /usr/local/lib/node_modules/npm
brew uninstall --force node      

2) 然后,前往 Node.js 官方网站https://nodejs.org/en/download/current/ 下载最新版本的软件包进行新安装。

3) 再次运行您的 npm 命令,应该不会再出现任何错误。

此方法适用于 macOS Mojave 版本 10.14.4


5

1
我尝试了这里发布的几乎所有方法,这是解决问题的方法。谢谢! - Tedesco

4

在Windows系统中:

请删除位于 ~/AppData/Roaming 目录下的 npm 文件夹。


我只需要删除该目录中的子文件夹npm cache。 - Morfinismo

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