首页 > 解决方案 > Nodemon 无法在 Docker 上使用 package.json 中的 npm 脚本

问题描述

我在 Docker 上使用 NodeJS 和 Nodemon。当我尝试直接在 docker compose 文件中使用nodemon命令运行我的 NodeJS 应用程序时,它会运行。

像这样(工作):[ docker-compose ]

command: nodemon source/index.js

但是当我使用 package.json 中的脚本时,它不起作用

像这样(不工作):[ docker-compose ]

command: npm run dev

我的 package.json 文件在哪里

"scripts": {
    "start": "node source/index.js",
    "dev": "nodemon source/index.js"
  }

我尝试了不同的东西,当我只是在没有 nodemon 的情况下运行启动脚本时,它可以工作

像这样(工作):[ docker-compose ]

command: npm run start

但是,当我尝试在其中再次使用带有nodemon命令的dev时,它不起作用。容器不会启动。我也尝试了以下方法,它也有效

像这样(工作):[ docker-compose ]

command: nodemon --exec npm start

我还是不明白,为什么nodemon命令在脚本开发中不起作用

我在 Swarm 模式下使用 Docker

这是我的两个文件

码头工人撰写

version: '3.7'

services:

    node-service:

        image: node-img:1.0

        ports:
        - 4000:4000

        working_dir: "/node-dir"

        volumes:
        - ./node-dir/source:/node-dir/source

        networks:
            - ness-net

        command: npm run dev

networks:

    ness-net:

包.json

{
  "name": "node-pkg",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node source/index.js",
    "dev": "nodemon source/index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "nodemon": "^1.19.4"
  }
}

标签: node.jsdockerpackage.jsonnodemonnpm-scripts

解决方案


只需添加“。” 像这样在你的 package.json 中定义路径

"scripts": {
    "start": "node ./source/index.js",
    "dev": "nodemon ./source/index.js"
  }

推荐阅读