Node.js 与 Docker
借助 Docker,您可以快速引导 Node.js 应用以在 WebStorm 中运行、调试和分析。 IDE 会负责初始配置,自动创建新的 Dockerfile ,构建并运行镜像,同步源代码,并在容器中安装 npm依赖项。
您可以在 Quick Tour of WebStorm and Docker.中找到一些示例。
开始之前
请确保已在 设置 | 插件 页面的 已安装 选项卡中启用所需插件: JavaScript Debugger、 Node.js、 Node.js Remote Interpreter 和 Docker。 如需了解更多信息,请参阅 Managing plugins。
请按照 Docker 中所述下载、安装并配置 Docker
在 Docker 中配置 Node.js 解释器
在 配置Node.js 远程解释器 对话框中配置 Docker 中的 Node.js 解释器。 您可以从 Node.js 页签中的 设置 对话框打开此对话框,或在稍后 创建或编辑 Node.js 运行/调试配置 时打开,以在 Docker 中运行或调试应用。
推荐方式是在 设置 对话框中配置远程 Node.js 解释器。 在这种方式下,您可以将该解释器及其关联包管理器设为项目默认项。 如此一来,您不仅可以使用配置好的 Docker 中 Node.js 解释器运行和调试应用,还能管理项目依赖、运行测试并进行代码检查。 请参阅下方内容: npm、pnpm 与 yarn 配合 Docker 使用、 测试应用 和 ESLint 与 Docker。
直接在 Node.js 运行/调试配置中配置的远程 Node.js 解释器仅可用于该配置中。
创建远程 Node.js 解释器
打开 设置 对话框(Ctrl+Alt+S ),然后转到 。
点击
按钮,位于 Node 解释器(I) 字段旁边。

在包含所有当前已配置解释器列表的 Node.js Interpreters 对话框中,点击工具栏上的
,然后从上下文菜单中选择 添加远程。

在打开的 Configure Node.js Remote Interpreter 对话框中,选择 Docker。
从 服务器 列表中选择要使用的 Docker 配置。

或者,点击字段旁边的 新建 并按照 启用 Docker 支持中的说明配置 Docker 服务器。
从 镜像名称 列表中选择要使用的镜像。

Node.js 可执行文件会自动检测并显示在 Node.js 解释器路径 字段中。
点击 确定 返回到 Node.js 解释器 对话框,在此处新解释器已添加到列表中。

要将新配置的解释器设置为项目默认值,请在列表中选中它,然后点击 确定 返回到 Node.js 对话框。

WebStorm 在每次从 Node 解释器 列表中选择
Project别名时都会自动使用该解释器,例如在创建运行/调试配置时。要使用与新解释器关联的软件包管理器来管理项目依赖项,请在项目中将该软件包管理器设置为默认值。 为此,请在 软件包管理器(M) 字段中指定包管理器的位置。 了解详情,请参阅 指定默认项目 Node.js 解释器和包管理器。
指定默认项目 Node.js 解释器和包管理器
WebStorm 在每次从 Node 解释器 列表中选择 Project 别名时都会自动使用默认项目解释器,例如在创建运行/调试配置时。
默认项目包管理器会自动用于管理依赖项,例如,从 <package manager> install 文件中运行 package.json ,或安装第三方工具,如 ESLint、Prettier 等。
打开 设置 对话框(Ctrl+Alt+S ),然后前往 。
从 Node 解释器(I) 列表中选择要在当前项目中默认使用的配置。
从 包管理器 列表中选择与要使用的软件包管理器关联的别名。 WebStorm 会自动检测其位置。

或者,请手动指定所需软件包管理器的位置。
npm 可执行文件的默认位置为
/usr/local/lib/node_modules/npm。pnpm 的默认位置取决于安装方式:
通过 npm 安装时位置为 /usr/local/lib/node_modules/pnpm 。
通过 curl 安装时位置为 /usr/local/pnpm-global/<version>/node_modules/pnpm (
curl -f https://get.pnpm.io/<version>.js | node - add --global pnpm)。
详细了解,请参阅 pnpm 官方网站。
yarn 的默认位置为 /opt/yarn-<version>5 ,例如 /opt/yarn-v1.22.5 。

npm、pnpm 与 yarn 配合 Docker 使用
使用 WebStorm,您可以像操作本地项目一样,在 Docker 容器中管理项目依赖项并运行脚本。
请确保已配置 Docker 中的远程 Node.js 解释器。
管理项目依赖项。
打开您的 package.json 文件,并按照本地开发方式操作,例如,从上下文菜单中选择 运行 '<package manager> install'。 依赖项会使用 Docker 容器内的默认包管理器安装,并且项目中会出现 node_modules 文件夹。
或者,打开内嵌的 终端 (Alt+F12 ),然后手动安装所需的软件包,例如,运行
npm install --save-dev eslint。
详细了解,请参阅 安装和更新包 和 编辑 package.json。
创建 Node.js 运行配置
前往 。 在打开的 编辑配置 对话框中,点击工具栏上的
,然后从上下文菜单中选择 Node.js。 将打开 运行/调试配置:Node.js 对话框。
在 文件 字段中,指定启动应用的主文件路径(例如,用于 Express 应用的 bin/www )。

如有需要,请按照 运行与调试 Node.js 应用中的说明指定一些可选设置。
从 Node 解释器(I) 列表中,选择在 Docker 环境中的相关远程 Node.js 解释器。

或者,点击
,在 Node 解释器(I) 字段旁边,并按照 上述说明配置远程 Node.js 解释器。

检查自动生成的 Docker 容器设置。 点击
以弹出窗口形式打开设置。

可选 :配置端口绑定, 详见下文。
配置端口绑定(可选)
基本上,您需要将应用运行的端口与容器的端口绑定。
点击 ,在 编辑 Docker 容器设置 字段旁边,并在打开的 编辑 Docker 容器设置 对话框中指定设置。
展开 端口绑定 区域,并点击工具栏上的
。 在打开的 端口绑定 对话框中,按如下方式映射端口:
点击 修改选项 并选择要指定的选项:

在 容器端口 字段中,输入应用中指定的端口。
在 主机端口 字段中,输入希望从计算机访问应用所使用的任意端口。
在 主机IP 字段中,输入 Docker 主机的 IP 地址。 如果使用的是
localhost,请输入127.0.0.1。
点击 确定 返回到 编辑Docker 容器设置 对话框,在此处新端口绑定已添加到列表中。

点击 确定 以返回 运行/调试配置:Node.js 对话框,其中端口绑定显示在 Docker 容器设置 字段。

运行应用

创建一个 Node.js 运行/调试配置, 如上所述。
在工具栏的 选择运行/调试配置 列表中,选择 新创建的 Node.js 配置。
点击
到 选择运行/调试配置 列表。
检查应用输出
为确保应用程序按预期运行,您可以从 WebStorm 内置 HTTP 客户端 运行一个 HTTP 请求。

创建一个 HTTP 请求文件。
编写以下请求:
GET http://<host IP>:<container port>/例如:
GET http://127.0.0.1:3010/点击
,然后点击
(在 运行 http://<host IP>:<container port>/ 旁边)。

应用程序输出显示在 运行 工具窗口的单独标签页中。

调试应用

根据需要在 Node.js 代码中设置 断点。
创建一个 Node.js 配置, 如上所述 ,在工具栏的 选择运行/调试配置 列表中选择该配置,并点击其旁边的
。
方式同本地 启动调试器与 Node.js 应用程序。
测试应用
在 WebStorm 中,您可以在 Docker 容器内运行 Mocha 和 Jest 测试,其方式与在本地运行相同。 有关详情,请参阅 Mocha 与 Jest。
请确保 Docker 中配置了相应的远程 Node.js 解释器,并将其设为项目的默认解释器。 还需确保与该远程解释器关联的软件包管理器已设置为项目默认值。 有关详情,请参阅 在 Docker 中配置 Node.js 解释器 与 npm、pnpm 与 yarn 配合 Docker 使用。
打开您的 package.json ,确保所需测试框架已列在
devDependencies部分中:{ "name": "node-express", "version": "0.0.0", "private": true, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^3.0.2" }, "devDependencies": { "chai": "^4.3.4", "concurrently": "^6.3.0", "eslint": "^8.1.0", "http-server": "^14.0.0", "jest": "^27.3.1", "mocha": "^9.1.3", "nyc": "^15.1.0" } }在编辑器的任意位置右键点击,然后从上下文菜单中选择 运行 '<package manager> install'。
根据 Mocha 官方网站 或 Jest 官方网站 的说明创建测试。
可直接在编辑器中运行并调试单个测试,或创建运行/调试配置以按 运行 Mocha 测试、 调试 Mocha 测试、 运行 Jest 测试 与 调试 Jest 测试 中所述启动部分或全部测试。
ESLint 与 Docker
在 WebStorm 中,您可以在 Docker 容器中对代码运行 ESLint ,其方式与在本地运行相同。 有关详情,请参阅 JavaScript 代码质量工具 与 ESLint。
请确保 Docker 中配置了相应的远程 Node.js 解释器,并将其设为项目的默认解释器。 还需确保与该远程解释器关联的软件包管理器已设置为项目默认值。 有关详情,请参阅 在 Docker 中配置 Node.js 解释器 与 npm、pnpm 与 yarn 配合 Docker 使用。
打开您的 package.json ,确保 ESLint 已在
devDependencies部分中列出:{ "name": "node-express", "version": "0.0.0", "private": true, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^3.0.2" }, "devDependencies": { "eslint": "^8.1.0" } }在编辑器的任意位置右键点击,然后从上下文菜单中选择 运行 '<package manager> install'。
之后,ESLint 的工作方式将与在本地处理代码时相同。 您可以在编辑器或 问题 工具窗口中查看检测到的问题描述,并应用建议的快速修复。 有关详情,请参阅 JavaScript 代码质量工具 与 ESLint。
