错误:使用 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
中。如果它不存在,我会看到两个选项:
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_PATH
或npmrc
配置的答案都应忽略,因为在相对搜索模块时不会考虑这些。
【讨论】:
我有类似的错误/缺少符号链接的问题,但实际上重新创建的语法是:ln -s ../lib/node_modules/npm/bin/npm-cli.js npm
【参考方案6】:
npm/lib
文件夹由于某种原因被清空时可能会发生这种情况(也可能由于上次使用时的权限问题而发生)。
重新安装节点可以解决问题(如此处其他答案所述),但我建议使用名为 nvm
(节点版本管理器)的出色工具,它能够管理多个版本的 node
和npm
- 这在有多个项目需要不同版本节点的开发机器上最有用。
当您install nvm 时,此消息将消失,您将可以使用最新版本的node
和npm
。
要查看 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 命令,它应该不再有任何错误。
此方法适用于 macOS 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 node
和 brew 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”的主要内容,如果未能解决你的问题,请参考以下文章
在 Ionic 2 中使用 NodeJS.Timer 时找不到命名空间 NodeJS
运行 ionic cordova build ios 时找不到包含的文件