通过nodist升级npm之后,执行npm init -y命令报错:
npm ERR! code MODULE_NOT_FOUND
npm ERR! Cannot find module 'libnpmexec'
npm ERR! Require stack:
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\lib\commands\init.js
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\lib\npm.js
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\lib\cli.js
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\bin\npm-cli.js
折腾好久才,打开https://github.com/npm/cli/tree/v8.15.0 才发现原来新版的node_modules目录下,libnpmexec 不再是一个文件夹,而已经变成了一个链接,指向../workspaces/libnpmexec。
这些链接在linux下是OK的,但通过nodist在windows下安装时,会被直接忽略掉,所以才会报上面的错误。
于是我把workspaces下的文件夹全部拷到了node_modules目录,结果又报一个错:
D:\vsProjects\myvue>npm init -y
npm ERR! code MODULE_NOT_FOUND
npm ERR! Cannot find module '@npmcli/arborist'
npm ERR! Require stack:
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\node_modules\libnpmexec\lib\index.js
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\lib\commands\init.js
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\lib\npm.js
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\lib\cli.js
npm ERR! - D:\Program Files (x86)\Nodist\npmv\8.15.0\bin\npm-cli.js
原来workspaces下的arborist是一个特例,不能直接拷到node_modules目录下,而是要拷到node_modules/@npmcli下,
至此,问题解决。
解决办法总结:
1、把workspaces下的除arborist之外的文件夹全部拷到node_modules目录;
2、把workspaces下的arborist拷到node_modules/@npmcli目录;