最大调用堆栈大小超过了Docker容器安装的npm

时间:2018-09-17 17:51:33

标签: docker npm

我正在尝试通过Docker容器进行npm安装:

这是一个DockerFile:

# default  /var/www/html (mapped to .../code folder with projects) 
FROM node

WORKDIR /work

# Additional tools (ng, gulp, bower)
RUN npm install -g @angular/cli bower gulp grunt

CMD while true; do sleep 10000; done

EXPOSE 3002 3003 3004

我运行并使用以下命令将其映射:

docker run -d --name node-cmd -p 3002:3002 -p 3003:3003 -p 3004:3004 -v 
/m/dockerlogs/node-cmd/logs:/root/.npm/_logs -v /m/projekty:/work node-cmd

我通过以下方式登录到该容器:

docker exec -it node-cmd bash -c "cd /code; bash"

运行npm install(https://github.com/gdi2290/angular-starter)之后,我从已登录的容器中编写此代码

但是安装后出现此错误

npm ERR! Maximum call stack size exceeded

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-09-17T17_38_34_855Z-debug.log
root@08e3cd77fb83:/work/angular-starter-master#

我试图删除node_modules,但是这个问题总是存在。

有时,出现此错误后,当我再次尝试npm install时,控制台会向我显示以下内容:

npm ERR! path /work/angular-starter- 
master/node_modules/@schematics/update/packa
ge.json.2932816706
npm ERR! code ETXTBSY
npm ERR! errno -26
npm ERR! syscall rename
npm ERR! ETXTBSY: text file is busy, rename '/work/angular-starter- 
master/node_m
odules/@schematics/update/package.json.2932816706' -> '/work/angular- 
starter-mas
ter/node_modules/@schematics/update/package.json'

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-09-17T17_14_43_970Z-debug.log
root@08e3cd77fb83:/work/angular-starter-master#

我的npm版本是6.4.1

我有Windows 8.1和Docker Toolbox

但是当我在没有Docker的Windows上编写npm install时,一切正常。

3 个答案:

答案 0 :(得分:1)

好的,我解决了这个问题,我使用了带有--no-bin-links标志的npm install。感谢您的回答:)

答案 1 :(得分:1)

这可能是因为节点版本不同。使用node -v检查您的节点版本,并将其用于Dockerfile。在此处检查受支持的标签和Dockerfile链接:https://hub.docker.com/_/node

Dockerfile中,我从FROM node:alpine AS node_builder更改为FROM node:lts-alpine AS node_builder,现在可以使用了。

答案 2 :(得分:0)

对我来说,这最终是由权限问题引起的(我以前在docker之外安装过node_modules)。删除node_modules并仅在docker内部安装可解决此问题。