用nodemon、dockerfile和docker-compose都无法调试node。

问题描述 投票:0回答:1

我试了很多东西,看了很多文章,有时我的调试甚至不工作,当它工作时,我的应用程序从来没有停止在我的断点,而我正在运行我的应用程序与docker,如果我删除launch.json和运行我的应用程序在docker之外,只是运行 "node app.js" ,我可以正常调试。

如果这是一个明显的事情,我很抱歉,我真的很难做到这一点。

所以,如果有人能给我任何指导,我会很高兴。

这是我的package.json

 "name": "ahgorastrainer",
 "version": "1.0.0",
 "description": "",
 "main": "app.js",
 "scripts": {
   "test": "echo \"Error: no test specified\" && exit 1",
   "start": "nodemon --inspect=0.0.0.0:9229 app.js"
 },
 "author": "Pedro Verani",
 "license": "ISC",
 "dependencies": {
   "bcryptjs": "^2.4.3",
   "body-parser": "^1.19.0",
   "bootstrap": "^4.4.1",
   "ejs": "^3.1.2",
   "express": "^4.17.1",
   "express-session": "^1.17.1",
   "mongoose": "^5.9.10",
   "nodemailer": "^6.4.6",
   "nodemon": "^2.0.3"
 }
}

Docker-compose

 version: '3'

services:
  ahgora-strainer:
    build: .
    command: npm start
    ports: 
      - 3000:3000
      - 9229:9229
    volumes:
      - .:/usr/app 

Docker文件

 FROM node:alpine

WORKDIR /usr/app

COPY package*.json ./

RUN npm install --quiet

COPY . . 

EXPOSE 3000

CMD ["npm", "start"] 

启动Json (这里是我尝试过十亿种不同配置的地方)

 "version": "0.2.0",
    "configurations": [
        {
            "port": 9229,
            "name": "strainer",
            "type": "node",
            "request": "attach",
            "remoteRoot": "/usr/src/app",
            "restart": true,
            "sourceMaps": false,
            "timeout": 99999999
        },
    ]
} 
node.js docker debugging nodemon
1个回答
0
投票

当在容器中运行一个节点应用时,必须将其作为一个远程节点进程进行调试。因此,你需要附加到进程中。Chrome让这个过程变得相对简单(一旦设置好了)。我通常的做法是

正常设置我的package.json,比如:

  "scripts": {
    "start": "node src/index.js"
  },

在Docker文件中安装nodemon。

RUN npm install -g [email protected]

最后在docker-compose中。

  mynodeapp:
    build: ./nodeApp
    container_name: mynodemultidb
    command: nodemon -L --inspect=0.0.0.0:5858
    volumes:
      - ./nodeApp:/code
    ports:
      - "8000:8000"
      - "5858:5858"
      - "3000:3000"

然后把应用程序用 docker-compose up在谷歌chrome中打开应用程序,进入 localhost:3000 (或你所暴露的任何端口)打开一个新的标签页并导航到 about:inspect你的应用程序应该显示在远程目标部分。Chrome inspector opened

点击检查链接.这将打开代码所附的开发工具。

Dev tools opened点击页面右侧的源代码链接(上图中index.js:37),打开代码,现在可以根据需要添加断点了。debugging code

回到运行应用程序的标签页,并刷新它来激活调试。

© www.soinside.com 2019 - 2024. All rights reserved.