解压缩二进制tarball后,节点找不到npm的依赖模块

时间:2018-09-29 14:18:25

标签: node.js 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二进制压缩包捆绑在一起的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的模块分辨率肯定可以解决问题。

谢谢! -保罗

1 个答案:

答案 0 :(得分:-1)

我在create-react-app上遇到了同样的问题 我不知道如何,但是添加'sudo'对我有用。

$ npm开始

--->提供与您相同的错误

$ sudo npm start

--->完美地工作

希望它可以解决您的问题