我在容器内安装了所有npm依赖项。因此,我不想在我的主机上安装依赖项。一切正常,它可以工作。但是Webstorm出现了问题。
它显示npm依赖项的"未解决函数"。 如何解决这个问题?我该如何告诉Webstorm:"嘿,node_modules目录在容器内 :)"
node_modules
位于项目文件夹中。NODE_PATH
:Run | Edit Configurations...,展开Templates节点,选择Node.js配置,在Environment variables字段中指定NODE_PATH
。node_modules
文件夹,但由于npm
依赖项是根据其主机环境构建的,因此它可能无法按预期工作,而这与您的本地开发机器不同。如果要运行一些CLI开发工具(有时是编译的二进制文件),则更适用于此说明。TLDR;
关键是将docker容器内的路径从/your-path
更新为/opt/project
。
详细解决方案
WebStorm的问题在于它们不允许您定义从哪里选择node_modules
的路径。但是,它们有一个默认路径可以选择。当我想要为在docker内运行的后端节点服务集成远程调试时,我遇到了相同的问题。
您需要更新您的docker文件。假设您使用的Dockerfile如下:
# pull official base image
FROM node:12.11-buster
# set working directory
WORKDIR /app
COPY ./package.json ./package-lock.json /app
RUN npm install
# pull official base image
FROM node:12.11-buster
# set working directory
# This done particularly for enabling debugging in webstorm.
WORKDIR /opt/project
COPY ./package.json ./package-lock.json ./.npmrc /opt/project
RUN npm install
/your-path
更新为/opt/project
。version: "3.7"
services:
backend-service:
build:
dockerfile: ./Dockerfile.local
context: ./
command: nodemon app.js
volumes:
- ./:/opt/project
- /opt/project/node_modules/
ports:
- 6060:6060
您可以在此博客中查看更多相关细节。