当我运行“Ionic start project name”时,我总是得到这个错误消息:
错误消息
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)
如果你正在使用“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
您现在应该看到您的节点路径。否则,它可能是别的东西
在Mac OS X(10.12.6)上,我通过以下方法解决了这个问题:
brew uninstall --force node
brew install node
然后我得到一个错误,抱怨节点postinstall失败,并重新运行brew postinstall节点
然后我得到一个错误:
permission denied @ rb_sysopen /usr/local/lib/node_modules/npm/bin/npx
我通过以下方法解决了这个错误:
sudo chown -R $(whoami):admin /usr/local/lib/node_modules
现在我不会再得到这个错误了。
这是一个关于从你的计算机操作系统中移除节点的有用视频和博客文章。这是一种不同的删除方法,基于您最初安装节点的方式(brew vs.从https://nodejs.org/en/下载的二进制文件)
if you installed node with Homebrew then brew uninstall node will work. Verify that with running a node -v command in your terminal.
Otherwise and if you have installed the binary file from nodeJS's websitethen you have to run this command in your terminal: sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}. Again, verify that with running a node -v command.
In both cases, successful removal of node should result in bash not recognizing what node is if it is completely removed
尝试了以上所有/旧的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 Version 10.14.4。
这可能发生在npm/lib文件夹由于某种原因被清空时(也可能发生在上次使用时由于权限问题)。
重新安装节点可以解决这个问题(正如这里的其他答案所述),但我建议使用一个叫做nvm(节点版本管理器)的很棒的工具,它能够管理多个版本的node和npm -这在开发机器上非常有用,因为有多个项目需要不同版本的node。
当你安装nvm时,这个消息就会消失,你就可以使用最新版本的node和npm了。
为了查看nvm中当前安装的节点版本列表,只需运行:
nvm list
要安装和使用新的节点版本,请运行:
nvm install <node_version>
例如安装节点10的最新版本。x,运行:
nvm install 10
为了切换到当前安装的版本,运行:
nvm use <node_version>
为了切换到系统的原始节点版本,只需运行:
nvm use system
希望这能有所帮助。
好运!
./lib/node_modules/npm/bin/npm-cli.js中的require('../lib/utils/unsupported.js')导致无法找到模块'../lib/utils/unsupported.js'错误。
根据nodejs require docs,所需的模块相对于文件进行搜索,因为它以../开头。
因此,如果我们从。/lib/node_modules/npm/bin/npm-cli.js开始选择相对路径../lib/utils/unsupported.js,那么所需的模块必须位于。/lib/node_modules/npm/lib/utils/unsupported.js中。如果它不在那里,我看到两个选项:
the installation is corrupt, in which case Vincent Ducastel's answer to reinstall node might work
npm is no symlink to ./lib/node_modules/npm/bin/npm-cli.js. This is what caused the error in my setup. If you call npm, it will typically find it be searching it in the directories listed in the PATH env var. It might for example be located in ./bin. However, npm in a ./bin directory should only be a symlink to the aforementioned ./lib/node_modules/npm/bin/npm-cli.js. If it is not a symlink but directly contains the code, somewhere in the installation process the symlink got replaced by the file it links to. In this case, it should be sufficient to recreate the symlink: cd ./bin; rm npm; ln -s ../lib/node_modules/npm/bin/npm-cli.js npm (update: command fixed, thx @massimo)
所有建议检查NODE_PATH或npmrc配置的答案都应该被忽略,因为相对地搜索模块时不会考虑这些。