微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

localhost 没有发送任何数据 ERR_EMPTY_RESPONSE nodejs

如何解决localhost 没有发送任何数据 ERR_EMPTY_RESPONSE nodejs

我正在尝试将此应用程序转换为 docker,但出现此错误

这是我的 express.js 文件

const express = require("express");
const app = express();
const portNumber = 3000;
const sourceDir = "dist";
const expressstaticGzip = require("express-static-gzip");
app.use(
  "/",expressstaticGzip(sourceDir,{
    enablebrotli: true,orderPreference: ["br","gz"],setHeaders: function(res,path) {
      res.setHeader("Cache-Control","public,max-age=31536000");
    }
  })
);

app.listen(portNumber,() => {
  console.log(`Express web server started: http://localhost:${portNumber}`);
  console.log(`Serving content from /${sourceDir}/`);
});

这是我的 dockerfile

FROM node:14
workdir /usr/src/app
copY package*.json ./
RUN npm install
copY . .
CMD [ "node","express.js" ]

感谢帮助。

解决方法

这是一个非常常见的错误。当您在 docker 容器中广播时,您通常必须在主机 0.0.0.0 上收听,而不仅仅是 localhost。如果您监听 localhost,docker 将无法将流量从容器外部路由到容器内的环回接口。

您可以通过更新您的 express 代码来解决此问题,以便在 0.0.0.0 上进行侦听。我相信就是这样:

app.listen(portNumber,"0.0.0.0",() => {
  console.log(`Express web server started: http://0.0.0.0:${portNumber}`);
  console.log(`Serving content from /${sourceDir}/`);
});

然后,您需要使用以下内容运行 dockerfile:

docker build -t node-app .
docker run -p 3000:3000 node-app

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。