为 sharp 库设置 webpack 和 docker
setup webpack and docker for sharp library
我正在尝试将 sharp(节点图像处理库)与 docker 和 webpack 一起使用。在我自己的机器上,我的本地环境一切正常,但是当我使用 docker 时,一切都不起作用,我得到一个错误 Can't find module sharp
在webpack配置中,我将sharp
标记为外部依赖
externals: {
sharp: 'sharp',
}
我将我的服务器捆绑在一个文件 main.js
中,然后将该文件复制到 docker 容器,最后在我的 docker 容器上安装 sharp
。这是我的 Docker 文件
FROM node:12.18.1
USER node
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin:/home/node/.npm-global/lib
RUN mkdir -p /home/node/server
WORKDIR /home/node/server
ENTRYPOINT ["node", "main.js"]
COPY dist/ .
RUN npm install --global --verbose --arch=x64 --platform=linux sharp
我确认 sharp
确实安装在 /home/node/.npm-global/lib
中,所以我不确定为什么我的包 main.js
找不到它?
原来这只是一个节点路径问题。所以我必须在运行时将 NODE_PATH
环境变量设置为 /home/node/.npm-global/bin:/home/node/.npm-global/lib/node_modules
。这样做之后问题就解决了,我的包可以找到 sharp 模块
我正在尝试将 sharp(节点图像处理库)与 docker 和 webpack 一起使用。在我自己的机器上,我的本地环境一切正常,但是当我使用 docker 时,一切都不起作用,我得到一个错误 Can't find module sharp
在webpack配置中,我将sharp
标记为外部依赖
externals: {
sharp: 'sharp',
}
我将我的服务器捆绑在一个文件 main.js
中,然后将该文件复制到 docker 容器,最后在我的 docker 容器上安装 sharp
。这是我的 Docker 文件
FROM node:12.18.1
USER node
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin:/home/node/.npm-global/lib
RUN mkdir -p /home/node/server
WORKDIR /home/node/server
ENTRYPOINT ["node", "main.js"]
COPY dist/ .
RUN npm install --global --verbose --arch=x64 --platform=linux sharp
我确认 sharp
确实安装在 /home/node/.npm-global/lib
中,所以我不确定为什么我的包 main.js
找不到它?
原来这只是一个节点路径问题。所以我必须在运行时将 NODE_PATH
环境变量设置为 /home/node/.npm-global/bin:/home/node/.npm-global/lib/node_modules
。这样做之后问题就解决了,我的包可以找到 sharp 模块