首页 > 解决方案 > 无法使用 npm start 启动 Express.js 应用程序,它以 Docker 启动,但现在 Docker 也不起作用

问题描述

我正在使用 Docker 开发带有 React 前端的 Node Express API,我在 Win 10 上开发,但产品在 Ubuntu VPS 上运行。

一切正常,直到昨天 Docker 停止工作并出现错误:

'Hyper-V 无法找到名为“DockerNAT”的虚拟交换机'。

在 github、stackoverflow、microsoft 等上尝试了所有相关问题的建议后,没有任何效果,所以我决定不使用 Docker 继续,所以我尝试使用 运行我的 API npm start,以前可以,但现在不行。好像卡住了;什么都没有发生,没有错误消息,什么都没有,但即使几个小时后它根本就没有启动。

我的 React 前端仍然使用npm start. 自从之前与 Docker 一起运行以来,我没有更改相关文件中的任何内容,现在我不知道可能是什么问题。

这是我在 API package.json 中的开始:

"scripts": {
  "start": "node ./bin/www"
},

www在正确的文件夹中,它与 Docker 一起使用。

这是 API 的 Docker 文件:

FROM mhart/alpine-node:8.11.4
WORKDIR /api
COPY package*.json /api/
RUN npm install
COPY . /api/
EXPOSE 9000
CMD ["npm", "start"]

这是一起运行两个项目的 docker-compose.yml,它完美地工作:

version: "2.1"
networks:
webappnetwork:
    driver: bridge
services:
    website:
         build: ./website
         restart: always
         ports:
              - "3000:3000"
         volumes:
              - ./website:/website
              - /website/node_modules
         networks:
              - webappnetwork
    api:
         build: ./api
         restart: always
         ports:
              - "9000:9000"
         volumes:
              - ./api:/api
              - /api/node_modules
         networks:
              - webappnetwork

在 Docker 停止工作之前没有任何 Windows 更新,Docker 也已经是最新版本,我没有更改任何代码。

我检查了我的 Docker 日志文件,起初它说:

无法获取 DockerNAT 开关

但我多次重新安装了不同的版本,现在它说:

MobyLinux 不存在

起初它存在;我在 Hyper-V 中检查了它,但现在它不存在。Hyper-V 网络适配器也消失了,在设备管理器中看不到它们。

如果有人能想到一些可以尝试的东西,无论是与 Docker/Hyper-V 错误有关还是为什么npm start会被卡住,我都会非常感激。

标签: node.jsdockerexpressnpmhyper-v

解决方案


推荐阅读