在解压缩二进制tarball之后,Node无法找到npm的依赖模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在解压缩二进制tarball之后,Node无法找到npm的依赖模块相关的知识,希望对你有一定的参考价值。
我从这里下载了最新的Node LTS Linux x86二进制tarball:
https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x86.tar.xz
并在此处提取:
/home/paul/dev/node-v8.12.0-linux-x86
我在我的路径中添加了Node的bin /目录:
$ echo $PATH
/home/paul/dev/node-v8.12.0-linux-x86/bin:/usr/local/bin:/usr/bin:/bin
并且Node运行良好:
$ node -v
v8.12.0
但是,当运行与Node二进制tarball捆绑的npm时,我得到:
$ npm -v
module.js:550
throw err;
^
Error: Cannot find module 'semver'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/paul/dev/node-v8.12.0-linux-x86/lib/node_modules/npm/lib/utils/unsupported.js:2:14)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
启用模块的调试显示其搜索的路径以查找semver模块:
MODULE 19001: Module._load REQUEST semver parent: /home/paul/dev/node-v8.12.0-linux-x86/lib/node_modules/npm/lib/utils/unsupported.js
MODULE 19001: looking for "semver" in ["/home/paul/dev/node-v8.12.0-linux-x86/lib/node_modules/npm/lib/utils/node_modules","/home/paul/dev/node-v8.12.0-linux-x86/lib/node_modules/npm/lib/node_modules","/home/paul/dev/node-v8.12.0-linux-x86/lib/node_modules/npm/node_modules","/home/paul/dev/node-v8.12.0-linux-x86/lib/node_modules","/home/paul/dev/node-v8.12.0-linux-x86/node_modules","/home/paul/dev/node_modules","/home/paul/node_modules","/home/node_modules","/node_modules","/home/paul/.node_modules","/home/paul/.node_libraries","/home/paul/dev/node-v8.12.0-linux-x86/lib/node"]
在那里,我看到这条道路:
/home/paul/dev/node-v8.12.0-linux-x86/lib/node_modules/npm/node_modules
这是semver模块所在的位置(作为npm的依赖模块):
$ ls -al /home/paul/dev/node-v8.12.0-linux-x86/lib/node_modules/npm/node_modules/semver
total 80
drwxr-xr-x 3 paul paul 125 Sep 29 11:01 .
drwxr-xr-x 351 paul paul 12288 Sep 10 15:23 ..
drwxr-xr-x 2 paul paul 27 Sep 10 15:23 bin
-rw-r--r-- 1 paul paul 765 Feb 10 2018 LICENSE
-rw-r--r-- 1 paul paul 1598 Aug 17 17:42 package.json
-rw-r--r-- 1 paul paul 619 Aug 17 17:42 range.bnf
-rw-r--r-- 1 paul paul 14655 Aug 17 17:42 README.md
-rw-r--r-- 1 paul paul 36503 Aug 17 17:42 semver.js
那么为什么Node不能解析npm的semver模块呢?
为了好玩,我尝试了支持x86的最新9.x版本,它仍然失败,但给出了不同的消息:
$ node -v
v9.11.2
$ npm -v
internal/modules/cjs/loader.js:550
throw err;
^
Error: Cannot find module '/home/paul/dev/node/bin/npm'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:548:15)
at Function.Module._load (internal/modules/cjs/loader.js:475:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:695:10)
at startup (internal/bootstrap/node.js:201:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:516:3)
Node的模块分辨率肯定会有所提升。
谢谢! - 保罗
答案
我遇到了与create-react-app相同的问题我不知道如何添加'sudo'对我有用。
$ npm开始
--->给出与你相同的错误
$ sudo npm start
--->工作完美
希望它能解决你的问题
以上是关于在解压缩二进制tarball之后,Node无法找到npm的依赖模块的主要内容,如果未能解决你的问题,请参考以下文章