如何在WebStorm中使用远程容器内的node_modules?

8

我在容器内安装了所有npm依赖项。因此,我不想在我的主机上安装依赖项。一切正常,它可以工作。但是Webstorm出现了问题。

它显示npm依赖项的"未解决函数"。 如何解决这个问题?我该如何告诉Webstorm:"嘿,node_modules目录在容器内 :)"

3个回答

1
WebStorm希望node_modules位于项目文件夹中。
您可以尝试在Node.js运行配置模板中设置NODE_PATHRun | Edit Configurations...,展开Templates节点,选择Node.js配置,在Environment variables字段中指定NODE_PATH
请参见https://youtrack.jetbrains.com/issue/WEB-19476中的注释。
但我不确定它是否适用于安装在容器中的模块...

1
尽管您公开了容器的node_modules文件夹,但由于npm依赖项是根据其主机环境构建的,因此它可能无法按预期工作,而这与您的本地开发机器不同。如果要运行一些CLI开发工具(有时是编译的二进制文件),则更适用于此说明。

1

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


现在这个不会检测node_modules用于远程调试或webstorm中需要的任何其他集成。 但是,如果你更新dockerfile为这样:
# 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


然后,WebStorm能够如预期地检测到所有内容。
诀窍是将路径从/your-path更新为/opt/project
您的docker-compose文件应该类似于这样:
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
    

您可以在此博客中查看更多相关细节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接