NPM 在"npm 安装"期间失败,并显示"npm ERR!超出最大调用堆栈大小"错误



我正在开发一个流行的wordpress插件(Sensei-lms)的分支…在这个页面上,插件开发人员给出了创建开发环境的说明:https://github.com/Automattic/sensei/wiki/Setting-Up-Your-Development-Environment#configure-a-local-wordpress-instance

我已经按照说明创建了一个干净的实例,并克隆了git repo

但是在运行npm install命令时,我总是得到以下错误:

vagrant@vvv:/srv/www/wordpress-one/public_html/wp-content/plugins/sensei$ npm install
npm ERR! Maximum call stack size exceeded
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2021-09-07T03_45_45_825Z-debug.log

日志文件并没有真正给出任何问题的指示,除了重复问题…

19886 verbose stack RangeError: Maximum call stack size exceeded
19886 verbose stack     at RegExp.test (<anonymous>)
19886 verbose stack     at isDepOptional (/usr/lib/node_modules/npm/lib/install/deps.js:432:45)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:441:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19886 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
19887 verbose cwd /srv/www/sensei/public_html/wp-content/plugins/sensei-lms
19888 verbose Linux 5.4.0-80-generic
19889 verbose argv "/usr/bin/node" "/usr/bin/npm" "install"
19890 verbose node v14.17.6
19891 verbose npm  v6.14.15
19892 error Maximum call stack size exceeded
19893 verbose exit [ 1, true ]

从我的阅读来看,似乎正在安装的依赖项的迭代已经达到了极限。

我试了下面所有的方法都没有运气:

1:根据多个博客和文章建议这样做

vagrant@vvv:...$ cd /srv/www/wordpress-one/public_html/wp-content/plugins/sensei
vagrant@vvv:...$ rm -fr /usr/lib/node_modules
vagrant@vvv:...$ rm -fr node_modules/
vagrant@vvv:...$ npm cache clean --force 
vagrant@vvv:...$ npm rebuild
vagrant@vvv:...$ rm package-lock.json
vagrant@vvv:...$ npm install

2: as per http://pyha.ru/forum/topic/9396.1

vagrant@vvv:...$ cd /srv/www/wordpress-one/public_html/wp-content/plugins/sensei
vagrant@vvv:...$ rm -fr /usr/lib/node_modules
vagrant@vvv:...$ rm -fr node_modules/
vagrant@vvv:...$ npm cache clean --force 
vagrant@vvv:...$ node --stack-size=10000 /usr/lib/node_modules/npm/bin/npm-cli.js install

有没有进一步的帮助-我可能做错了什么?


对于上述问题的进一步说明:

  1. 我在Macbook Pro上运行VVV,默认设置创建一台VVV机器,运行Ubuntu 20.04.3 LTS的便当盒和npm 6.14.15版本(来自nodejs包版本:14.17.6-deb-1nodesource1)

  2. 我已经破坏了VVV实例,并重新开始工作,没有任何问题,我可能在早期的尝试中创建-仍然失败!

  3. 我已经去了我的桌面linux机器(不同的机器从mac运行VVV) - linux桌面运行Ubuntu 20.04.3 LTS本机默认apt安装npm 6.14.4版本(从nodejs包版本:10.19.0~dfsg-3ubuntu1)和一个干净的传感器git clonenpm install工作良好!

似乎问题在于Vagrant(甚至VirtualBox),而不是npm或sensei....

在一个快速的谷歌搜索中,我发现了以下文章:https://www.cloudbees.com/blog/otto-next-generation-vagrant其中提到(强调我的):

Vagrant远未死亡,但它遭受了几个持久问题,包括创建的虚拟机的资源占用,主机和虚拟机之间共享文件的速度,对虚拟机进行配置更改的速度。

这让我想到如果我可以运行npm在虚拟机在一个文件夹不通过主机共享....如下:

vagrant@vvv:~$ pwd
/home/vagrant
vagrant@vvv:~$ git clone https://github.com/Automattic/sensei.git
vagrant@vvv:~$ cd sensei/
vagrant@vvv:~$ npm install

它成功了!

因此,下一步是将成功的node_modules文件夹从非共享文件夹复制到public_html文件夹并构建资产:
vagrant@vvv:...$ cd /srv/www/wordpress-one/public_html/wp-content/plugins/
vagrant@vvv:...$ git clone https://github.com/Automattic/sensei.git
vagrant@vvv:...$ cd sensei/
vagrant@vvv:...$ mv ~/sensei/node_modules/ .
vagrant@vvv:...$ npm run build:assets

mv花了很长时间,但它工作了!

我不知道如果我需要再次运行npm install会发生什么,但我们会跨越这个桥当我们到达它。

至少我们在工作....

最新更新