Node.js 切换节点版本使我无法从npm读取未定义的属性'resolve'
我使用n版本管理器,当我将节点版本更改为11.10时,NPM停止工作Node.js 切换节点版本使我无法从npm读取未定义的属性'resolve',node.js,n,Node.js,N,我使用n版本管理器,当我将节点版本更改为11.10时,NPM停止工作 $ n latest node/11.10.1 $ npm i sinon npm ERR! Cannot read property 'resolve' of undefined npm ERR! A complete log of this run can be found in: npm ERR! /home/myuser/.npm/_logs/2019-03-04T22_12_54_458Z-debug.
$ n latest
node/11.10.1
$ npm i sinon
npm ERR! Cannot read property 'resolve' of undefined
npm ERR! A complete log of this run can be found in:
npm ERR! /home/myuser/.npm/_logs/2019-03-04T22_12_54_458Z-debug.log
$ npm --version
6.7.0
如果我更改回Node的早期版本,或者任何早期版本,它将重新开始工作
调试日志的完整输出
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'i', 'sinon' ]
2 info using npm@6.7.0
3 info using node@v11.10.1
4 verbose npm-session d32761bbecba8a12
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 silly fetchPackageMetaData error for sinon@^7.2.7 Cannot read property 'resolve' of undefined
8 timing stage:rollbackFailedOptional Completed in 0ms
9 timing stage:runTopLevelLifecycles Completed in 73ms
10 verbose stack TypeError: Cannot read property 'resolve' of undefined
10 verbose stack at regFetch (/usr/local/lib/node_modules/npm/node_modules/npm-registry-fetch/index.js:76:23)
10 verbose stack at fetchPackument (/usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/packument.js:42:10)
10 verbose stack at packument (/usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/packument.js:20:10)
10 verbose stack at getManifest (/usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/manifest.js:22:10)
10 verbose stack at manifest (/usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/manifest.js:13:10)
10 verbose stack at Object.manifest (/usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/index.js:17:12)
10 verbose stack at Object.Fetcher#manifest [as manifest] (/usr/local/lib/node_modules/npm/node_modules/genfun/lib/genfun.js:15:38)
10 verbose stack at manifest (/usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetch.js:23:18)
10 verbose stack at pinflight (/usr/local/lib/node_modules/npm/node_modules/pacote/manifest.js:24:12)
10 verbose stack at /usr/local/lib/node_modules/npm/node_modules/promise-inflight/inflight.js:29:24
10 verbose stack at Promise._execute (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/debuggability.js:313:9)
10 verbose stack at Promise._resolveFromExecutor (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:483:18)
10 verbose stack at new Promise (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:79:10)
10 verbose stack at _inflight (/usr/local/lib/node_modules/npm/node_modules/promise-inflight/inflight.js:28:25)
10 verbose stack at /usr/local/lib/node_modules/npm/node_modules/promise-inflight/inflight.js:22:14
10 verbose stack at tryCatcher (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23)
11 verbose cwd /tmp/foo
12 verbose Linux 4.15.0-34-generic
13 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "i" "sinon"
14 verbose node v11.10.1
15 verbose npm v6.7.0
16 error Cannot read property 'resolve' of undefined
17 verbose exit [ 1, true ]
这似乎是n的一个问题,或者是它如何捆绑NPM,只针对11.10版的Node。基本上,全球npm安装已中断 如果使用n还原到Node和NPM的早期版本并下载相同的有问题的版本6.7.0,则可以解决此问题
n 11.9
npm install -g npm@6.7
n 11.10
这似乎覆盖了NPM版本6.7.0的现有缓存全局下载,并修复了安装。即使在节点版本之间切换后,即使每次将npm命令重置为指向默认值,修复程序仍能继续工作。这意味着即使你做了npm我npm@6.8-g要对npm进行全局升级,下次来回切换到Node 11.10时,它将重置为6.7。这似乎是n的问题,或者它如何捆绑npm,仅适用于Node 11.10版本。基本上,全球npm安装已中断 如果使用n还原到Node和NPM的早期版本并下载相同的有问题的版本6.7.0,则可以解决此问题
n 11.9
npm install -g npm@6.7
n 11.10
这似乎覆盖了NPM版本6.7.0的现有缓存全局下载,并修复了安装。即使在节点版本之间切换后,即使每次将npm命令重置为指向默认值,修复程序仍能继续工作。这意味着即使你做了npm我npm@6.8-g要对npm进行全局升级,下次来回切换到节点11.10时,它将重置为6.7。您运行的是早于v2.1.12的n版本吗?n在v2.1.12中进行了更新,以在安装过程中删除以前的npm node_modules文件夹,以避免在版本之间更改npm modules文件夹的布局和内容时出现问题 如果您使用npm安装了n,则短版本:
npm install -g n
长版本:
您运行的n版本是否早于v2.1.12?n在v2.1.12中进行了更新,以在安装过程中删除以前的npm node_modules文件夹,以避免在版本之间更改npm modules文件夹的布局和内容时出现问题 如果您使用npm安装了n,则短版本:
npm install -g n
长版本: