首页 > 解决方案 > package.json 依赖项在我的本地 Windows 主机上不起作用,但它在 docker 中起作用 为什么?

问题描述

我已经从以下位置下载了示例 docker 入门项目:getting-started-webpage

{
    "name": "101-app",
    "version": "1.0.0",
    "main": "index.js",
    "license": "MIT",
    "scripts": {
        "prettify": "prettier -l --write \"**/*.js\"",
        "test": "jest",
        "dev": "nodemon src/index.js"
    },
    "dependencies": {
        "body-parser": "^1.19.0",
        "express": "^4.17.1",
        "mysql": "^2.17.1",
        "sqlite3": "^4.1.0",
        "uuid": "^3.3.3",
        "wait-port": "^0.2.2"
    },
    "prettier": {
        "trailingComma": "all",
        "tabWidth": 4,
        "useTabs": false,
        "semi": true,
        "singleQuote": true
    },
    "devDependencies": {
        "jest": "^24.9.0",
        "nodemon": "^1.19.2",
        "prettier": "^1.18.2"
    }
}

抛出异常::

at Object.<anonymous> (C:\Users\Ulrich Giorgio Jäger\IdeaProjects\docker-tutorial-app\node_modules\sql
ite3\lib\sqlite3-binding.js:4:15)
error MODULE_NOT_FOUND

Dockerfile:

FROM node:12-alpine
RUN apk add --no-cache python g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]

所以我的问题是为什么它在复制到 docker 容器而不是本地时有效

我可以从 settings.json 更新所有依赖项,现在这个错误已经消失了。我现在在另一个问题上挣扎

Files\nodejs\node_modules\npm\bin\npm-cli.js" run dev --scripts-prepend-node-path=auto

> 101-app@1.0.0 dev C:\Users\Ulrich Giorgio Jäger\IdeaProjects\docker-tutorial-app
> nodemon src/index.js

[nodemon] 2.0.12
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/index.js`
Using sqlite database at /etc/todos/todo.db
events.js:377
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use 127.0.0.1:6942
    at Server.setupListenHandle [as _listen2] (net.js:1320:16)
    at listenInCluster (net.js:1368:12)
    at doListen (net.js:1505:7)
    at processTicksAndRejections (internal/process/task_queues.js:83:21)
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1347:8)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) {
  code: 'EADDRINUSE',
  errno: -4091,
  syscall: 'listen',
  address: '127.0.0.1',
  port: 6942
}
[nodemon] app crashed - waiting for file changes before starting.

有没有人知道为什么。经过这么多更新后,这在我的本地计算机上不起作用,即使端口打开新连接,端口仍被标记为已占用

标签: node.jsdockernpmyarnpkg

解决方案


推荐阅读