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


262

当我运行“离子启动项目名称”时,我总是收到此错误消息:

错误信息

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)

相对路径是错误的...
Subburaj

检查./bash_profile中的路径
Mohan Gopi

在MacOS上-从nodejs.org重新安装 有助于查看stackoverflow.com/a/12313655/1497139
Wolfgang Fahl,

Answers:


774

尝试/usr/local/lib/node_modules/npm再次删除并重新安装节点。这应该工作。

在带有Homebrew的 MacOS上:

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

1
如果有人想那里通过取景器:knowledge.autodesk.com/support/smoke/troubleshooting/caas/...
A.com

13
如果您使用Brew,则可以使用:brew unistall --force nodebrew install node
Nico

15
@Nico第一个命令有错字。更正将是brew uninstall --force node
Jayant Bhawal,

11
为什么会这样呢?
加乌拉夫·帕利瓦

4
执行完上述命令后,现在得到>> -bash:/ usr / local / bin / npm:没有这样的文件或目录
Tarun

81

我遵循了先前的答案并重新安装了节点。但是我得到了这个错误。

警告:安装后步骤未成功完成,您可以使用重新尝试 brew postinstall node

所以我跑了这个命令

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

然后跑

brew postinstall node

或者,您可以运行sudo chown -R $(whoami)$(brew --prefix)/ *
探路者

27

我收到了类似的错误,现在可以使用了。

首先确保您拥有最新版本

brew update

删除先前的节点实例:

brew uninstall node

然后重新安装最新版本:

brew install node

然后确保它尚未链接到/ usr / local。您会收到一条错误消息,通知您完成此步骤。

brew link --overwrite node 

还提供了有关如何安装/升级节点的更多详细信息。


12
brew uninstall --ignore-dependencies node例如,如果yarn您的系统中有,则可以使用。
Sound Blaster

18

在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

9

如果您使用的是“ 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

您现在应该看到“节点路径”。否则,可能还有其他


8

如前面提到的。

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

6

尝试了以上所有/较旧的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



2

是的,您应该重新安装节点:

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

2

只需遵循三个步骤;

  1. npm强制清除缓存:

    npm cache clean -f

  2. n使用npm以下命令全局安装软件包:

    npm install -g n

  3. 从以下三个选项之一安装:

    一个。 sudo n stable (get the stable version)

    b。 sudo n latest (get the latest version of node)

    C。 sudo n x.x.x (get the specific version of node)


2

该错误Cannot find module '../lib/utils/unsupported.js'是由require('../lib/utils/unsupported.js')in 引起的./lib/node_modules/npm/bin/npm-cli.js

根据nodejs require文档,所需的模块相对于文件进行搜索,因为该文件以开头../

因此,如果我们采用相对路径../lib/utils/unsupported.js从开始./lib/node_modules/npm/bin/npm-cli.js,则所需的模块必须位于中./lib/node_modules/npm/lib/utils/unsupported.js。如果不存在,我会看到两个选择:

  • 安装已损坏,在这种情况下,Vincent Ducastel的重新安装节点答案可能有效
  • npm与没有符号链接./lib/node_modules/npm/bin/npm-cli.js。这是导致我的设置错误的原因。如果调用npm,它通常会在PATHenv var中列出的目录中搜索它。例如,它可能位于中./bin。然而,npm在一个./bin目录应该只是一个符号链接上述./lib/node_modules/npm/bin/npm-cli.js。如果它不是符号链接,而是直接包含代码,则在安装过程中的某个位置,符号链接将替换为其链接到的文件。在这种情况下,重新创建符号链接应该足够了:cd ./bin; rm npm; ln -s npm ./lib/node_modules/npm/bin/npm-cli.js

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


1

我通过混合安装/更新方法来得到此错误:通过从网站下载软件包来安装节点,后来我使用brew更新。

我通过卸载brew版本来解决:

brew卸载--ignore-dependencies节点

然后,我返回到节点网站,并通过软件包管理器下载并安装:https : //nodejs.org/en/download/ 出于某种原因,尝试通过brew重新安装没有任何作用。


0

在我的情况下,缺少$ NODE_PATH:

NODE="/home/ubuntu/local/node" #here your user account after home
NODE_PATH="/usr/local/lib/node_modules" 
PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$NODE/bin:$NODE/lib/node_modules"

仅检查为echo $NODE_PATH空意味着未设置。建议将它们添加到.bashrc。


0

在fedora 27上,我这样做来解决了这个问题:

sudo rm -f  /usr/local/lib/node_modules/npm
sudo dnf reinstall nodejs

0

这是有关从计算机操作系统中删除节点的有用视频和博客文章。根据您首先安装节点的方式(从https://nodejs.org/en/下载的棕色文件与二进制文件),这是一种不同的删除方法。

  • 如果您使用Homebrew安装了节点,那么brew卸载节点将起作用。通过node -v在终端中运行命令来验证。

  • 否则,如果您已经从nodeJS网站安装了二进制文件,则必须在终端中运行以下命令:sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}。再次,通过运行node -v命令来验证。

  • 在这两种情况下,成功删除节点都将导致bash如果完全删除该节点,则无法识别该节点


2
欢迎使用指向解决方案的链接来支持答案,但是您发布的答案应完全独立,即不需要访问者单击可能包含意外或恶意内容或根本不存在的其他网站。
三人房

0

在我的macOS(10.13.3)中,重新安装Node version manager后解决了它。

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc

0

npm/lib文件夹由于某种原因被清空时可能会发生这种情况(也可能由于上次使用中的权限问题而发生)。

重新安装节点可以解决问题(如此处其他答案所述),但我建议使用一个名为nvm(Node Version Manager)的出色工具,该工具能够管理的多个版本,node并且npm-在开发机器上最有用一个以上的项目需要不同版本的节点。

当您安装NVM,此消息将消失,你将有最新版本nodenpm使用。

为了查看您的nvm中当前安装的节点版本列表,只需运行:

nvm list

为了安装和使用新的节点版本,请运行:

nvm install <node_version>

例如,要安装最新版本的节点10.x,请运行:

nvm install 10

为了切换到当前安装的版本,请运行:

nvm use <node_version>

为了切换到系统的原始节点版本,只需运行:

nvm use system

希望这可以帮助。

祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.