簡體   English   中英

無法調試節點,使用 nodemon,dockerfile 和 docker-compose

[英]Can't debug node, with nodemon, dockerfile and docker-compose

我嘗試了很多東西,閱讀了很多文章,有時我的調試甚至無法正常工作,當它運行時,如果我刪除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
        },
    ]
} 

在容器中運行節點應用程序時,必須將其作為遠程節點進程進行調試。 因此,您需要附加到該過程。 Chrome 使這個過程相對容易(一旦設置好)。 我通常這樣做的方式:

使用以下內容正常設置我的 package.json:

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

在 Dockerfile 中安裝 nodemon:

RUN npm install -g nodemon@1.19.1

最后在 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應用程序 通過轉到localhost:3000 (或您公開的任何端口)在 Google chrome 中打開應用程序 打開一個新選項卡並導航到about:inspect您的應用程序應該顯示在遠程目標部分。 Chrome 檢查器已打開

單擊檢查鏈接。 這將打開附加到代碼的開發工具。

開發工具打開 點擊頁面右側的源代碼鏈接(上圖中的index.js:37)。 這將打開代碼,現在可以根據需要放置斷點調試代碼

Go 返回運行應用程序的選項卡並刷新它以激活調試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM