在 Docker 中使用 Node.js
借助 Docker,您可以快速启动您的 Node.js 应用,以便在 PyCharm 中运行、调试并进行性能分析。 IDE 会通过自动创建一个新的 Dockerfile 、构建并运行镜像、同步您的源代码以及在容器中安装 npm 依赖来处理初始配置。
您可以在 WebStorm 与 Docker 快速导览。中找到一些示例
开始之前
请确保在 设置 | 插件 页面、“ 已安装” 选项卡上启用了所需的 JavaScript 和 TypeScript、 JavaScript 调试器、 Node.js、 Node.js 远程解释器 和 Docker 插件。 更多信息,请参阅 管理插件。
在 设置 | 插件 页面、“ Marketplace” 选项卡上安装 Node.js 和 Node.js 远程解释器 插件,具体请参阅 从 JetBrains Marketplace 安装插件。
按照 Docker 中的说明下载、安装并配置 Docker。
在 Docker 中配置 Node.js 运行时
Docker 中的 Node.js 运行时在 配置Node.js 远程解释器 对话框中进行配置。 您可以在 设置 对话框的 JavaScript 运行时 页面中打开此对话框,或稍后在为在 Docker 中运行或调试应用时 创建或编辑 Node.js 运行/调试配置 时打开。
建议在 设置 对话框中配置远程 Node.js 运行时。 在这种情况下,您可以将该运行时及其关联的包管理器设为项目默认。 因此,您不仅可以在 Docker 中使用已配置的 Node.js 运行时运行和调试应用,还可以管理项目依赖、运行测试并执行代码检查。 请参阅下文的 在 Docker 中使用 npm、pnpm 和 yarn、 测试应用程序 和 在 Docker 中使用 ESLint。
在 Node.js 运行/调试配置中直接配置的远程 Node.js 运行时只能与该运行/调试配置一起使用。
创建远程 Node.js 运行时
打开 设置 对话框(Ctrl+Alt+S ),然后转到 。
点击
,位于 Node 运行时 字段旁。

在列出所有当前已配置运行时的 Node.js 运行时 对话框中,点击工具栏上的
,并在上下文菜单中选择 添加远程。

在打开的 配置 Node.js 远程运行时对话框 中,选择 Docker。
在 服务器 列表中,选择要使用的 Docker 配置。

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

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

要将新配置的运行时设为项目默认,请在列表中选择它并点击 确定 返回到 JavaScript 运行时 对话框。

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

或者,手动指定所需包管理器的位置。
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 。

在 Docker 中使用 npm、pnpm 和 yarn
使用 PyCharm,您可以像在本地项目中那样,在 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 运行时 列表中,选择在 Docker 环境中的相应远程 Node.js 运行时。

或者,点击位于 Node 运行时 字段旁的
,并按照 如上所述 配置远程 Node.js 运行时。

检查自动生成的 Docker 容器设置。 点击
,在弹出窗口中打开设置。

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

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

点击 确定 返回到 Run/Debug Configuration: Node.js 对话框,在其中的 Docker 容器设置 字段中显示端口绑定。

运行应用程序

创建一个 Node.js 运行/调试配置, 如上所述。
在工具栏上的 选择运行/调试配置 列表中,选择 新创建的 Node.js 配置。
点击位于 选择运行/调试配置 列表旁的
。
检查应用程序输出
为确保应用程序按预期工作,您可以从 PyCharm 内置 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 应用程序一起启动调试器 时相同。
测试应用程序
使用 PyCharm,您可以在 Docker 容器中运行 Mocha 和 Jest 测试,就像在本地一样。 更多信息,请参阅 Mocha 和 Jest。
请确保已在 Docker 中配置了相关的远程 Node.js 运行时,并将其设为项目默认。 还要确保与该远程运行时关联的包管理器已设为项目默认。 更多信息,请参阅 在 Docker 中配置 Node.js 运行时 和 在 Docker 中使用 npm、pnpm 和 yarn。
打开您的 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 测试。
在 Docker 中使用 ESLint
使用 PyCharm,您可以在 Docker 容器中针对代码运行 ESLint ,就像在本地一样。 更多信息,请参阅 JavaScript 代码检查器 和 ESLint。
请确保已在 Docker 中配置了相关的远程 Node.js 运行时,并将其设为项目默认。 还要确保与该远程运行时关联的包管理器已设为项目默认。 更多信息,请参阅 在 Docker 中配置 Node.js 运行时 和 在 Docker 中使用 npm、pnpm 和 yarn。
打开您的 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。
