node.js - 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.
有没有人知道为什么。经过这么多更新后,这在我的本地计算机上不起作用,即使端口打开新连接,端口仍被标记为已占用
解决方案
推荐阅读
- xml - 基于文档值分布的 Solr 功能
- flutter - 参数类型“Function”不能分配给参数类型“void Function(bool?)?”
- woocommerce - 如何在 WooCommerce 中根据运输等级包装产品?
- go - 如何从 URL 中检索域?
- r - 如何在R中将两个总和更改为两个for循环?
- c# - 如果表格不在焦点上,有没有办法按一个键使表格出现?
- java - 无法解析符号'StackPane' Intelij IDEA
- java - Spring Boot 2.5.0、Spring Cloud 2020.0.2 和 Hibernate 5.4.31 - H2 数据库多行插入失败
- php - 在 PHP 中使用 CURL 发送文件和参数
- php - 仅为特定的重力形式运行函数