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

Posted

技术标签:

【中文标题】错误:使用 Ionic 时找不到模块“../lib/utils/unsupported.js”【英文标题】:Error: Cannot find module '../lib/utils/unsupported.js' while using Ionic 【发布时间】:2017-11-05 21:07:24 【问题描述】:

我在运行“Ionic 启动项目名称”时总是收到此错误消息:

错误信息

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)

【问题讨论】:

相对路径错误.. 检查./bash_profile中的路径 在 MacOS 上 - 从 nodejs.org 重新安装有助于查看 ***.com/a/12313655/1497139 的支持 如果您已配置构建脚本,请尝试“npm run build”然后“npm start” 【参考方案1】:

我通过运行以下命令解决了这个问题

nvm install node --reinstall-packages-from=node

【讨论】:

【参考方案2】:

你可以运行这个命令它会自动删除以前版本的npm并安装新版本以获取详细信息https://github.com/npm/cli

curl -qL https://www.npmjs.com/install.sh | sh

【讨论】:

【参考方案3】:

在 Windows 上:

删除 ~/AppData/Roaming 中的 npm 文件夹

【讨论】:

我只需要删除该目录中的子文件夹 npm 缓存。【参考方案4】:

我遇到了类似的问题,当我尝试通过 npm test 执行 Mocha 时,找不到整个 ../lib/utils 目录。我在这里尝试了提到的解决方案,但没有成功。最终,我最终卸载并重新安装了 Mocha 包这是我正在使用的 npm 项目中的一个依赖项,然后它就可以工作了。因此,如果有人在将 npm 包安装为依赖项时遇到此问题,请尝试卸载并重新安装该包(如果您还没有安装)!

【讨论】:

【参考方案5】:

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

根据the nodejs require docs,相对于文件搜索所需的模块,因为它以../开头。

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

安装已损坏,在这种情况下Vincent Ducastel's answer 重新安装节点可能会起作用 npm 不是./lib/node_modules/npm/bin/npm-cli.js 的符号链接。这就是导致我的设置错误的原因。如果您调用npm,它通常会发现它正在PATH env var 中列出的目录中搜索它。例如,它可能位于./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【参考方案6】:

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

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

当您install nvm 时,此消息将消失,您将可以使用最新版本的nodenpm

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

nvm list

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

nvm install <node_version>

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

nvm install 10

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

nvm use <node_version>

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

nvm use system

希望这会有所帮助。

祝你好运!

【讨论】:

【参考方案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 命令,它应该不再有任何错误。

此方法适用于 ma​​cOS Mojave 版本 10.14.4

【讨论】:

【参考方案8】:

https://nodejs.org/en/

只需从官方网站下载节点,这对我有用! :)

【讨论】:

我几乎尝试了这里发布的所有其他内容,这就是为我解决的问题。谢谢!【参考方案9】:

只需遵循三个步骤;

    强制清除npm缓存:

    npm cache clean -f

    使用npm全局安装n包:

    npm install -g n

    从三个选项中的任何一个安装:

    一个。 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)

【讨论】:

【参考方案10】:

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

我通过卸载 brew 版本修复了:

brew 卸载 --ignore-dependencies 节点

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

【讨论】:

【参考方案11】:

尝试删除/usr/local/lib/node_modules/npm 并重新安装节点。这应该可以。

在 MacOS 上使用Homebrew:

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

【讨论】:

如果有人想通过 finder 到达那里:knowledge.autodesk.com/support/smoke/troubleshooting/caas/… 如果您使用的是 brew,那么您可以使用:brew unistall --force nodebrew install node @Nico 第一个命令有错字。更正将是brew uninstall --force node 为什么会这样? 执行上述命令后,现在得到>> -bash: /usr/local/bin/npm: No such file or directory【参考方案12】:

我按照之前的答案重新安装了节点。但是我收到了这个错误。

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

所以我运行了这个命令

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

然后跑了

brew postinstall node

【讨论】:

或者你可以运行 sudo chown -R $(whoami) $(brew --prefix)/*【参考方案13】:

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

您现在应该会看到您的节点路径。否则,可能是别的东西

【讨论】:

【参考方案14】:

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

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

【讨论】:

【参考方案15】:

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

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

【讨论】:

【参考方案16】:

这是一个有用的视频,blog post 关于从您的计算机操作系统中删除节点。这是一种不同的删除方法,具体取决于您首先安装节点的方式(brew vs. 从https://nodejs.org/en/下载的二进制文件

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

否则,如果你已经从nodeJS's website安装了二进制文件,那么你必须在你的终端中运行这个命令:sudo rm -rf /usr/local/bin/node,npm,lib/node_modules/npm,lib/node,share/man/*/node.*。再次,通过运行 node -v 命令验证这一点。

在这两种情况下,成功删除节点都会导致 bash 无法识别完全删除的节点是什么

【讨论】:

欢迎提供解决方案链接以支持一个答案,但您发布的答案应该是完全独立的,即不需要访问者点击进入另一个网站可能包含意外或恶意内容,或者根本不存在。【参考方案17】:

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

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

【讨论】:

【参考方案18】:

如前所述。

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

【讨论】:

【参考方案19】:

在 Mac OS X (10.12.6) 上,我通过执行以下操作解决了这个问题:

brew uninstall --force node
brew install node

然后我收到一个错误,抱怨 node postinstall 失败,并重新运行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

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

【讨论】:

我不得不在需要创建或需要更改其所有权(对我的用户)的不同文件夹上重复几次。每次我会运行 brew postinstall node 来查找下一个问题,修复它,重复。【参考方案20】:

在我的情况下,它缺少 $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。

【讨论】:

【参考方案21】:

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

首先确保您拥有最新版本

brew update

删除之前的节点实例:

brew uninstall node

然后重新安装最新版本:

brew install node

然后确保它被符号链接到 /usr/local 如果它还没有。您会收到一条错误消息,通知您完成此步骤。

brew link --overwrite node 

更多关于如何安装/升级节点are also available的细节。

【讨论】:

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

以上是关于错误:使用 Ionic 时找不到模块“../lib/utils/unsupported.js”的主要内容,如果未能解决你的问题,请参考以下文章

使用 webpack 时找不到 vertx 模块

在 Ionic 2 中使用 NodeJS.Timer 时找不到命名空间 NodeJS

导入具有导出枚举的模块时找不到模块错误

运行 ionic cordova build ios 时找不到包含的文件

未捕获的错误:对 JavaScript 使用动态导入时找不到模块

使用 npm 命令时找不到模块“npmlog”错误消息