Crostini - 节点服务器在本地主机上不工作

Crostini - Node server doesn't work on localhost

我在 Chrome79 上有一台 Pixelbook。在我的终端 (Crostini) 中,我 运行 一个简单的 Express 应用程序:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
    res.send('Hello!');
});

const PORT = 8080;

app.listen(PORT, () => console.log(`Listening on port ${PORT}...`));

然后在浏览器中尝试 localhost:8080,我收到 localhost refused to connect 错误。

如果我使用 Angular CLI 工具制作样板文件 Angular 项目并使用 ng serve,它会告诉我它正在 localhost:4200 监听 - 我尝试这样做它 有效。

有什么区别?如何让我的应用程序在本地主机上运行?

我觉得几个月前我上次尝试它时就成功了,但现在它不起作用了,我也说不出原因。我试过使用其他端口并重新启动计算机,但没有任何变化。

编辑:我在此处看到 Google 端口转发应该自动工作的演示:https://youtu.be/pRlh8LX4kQI?t=1160 - 但它似乎不适合我。

编辑 2:如果我找到带有 ip addr show | grep inet 的容器的 IP(对我来说是 100.115.92.199)并在端口 8080 尝试它,它就可以工作。另外,我在 Reddit 上发现有人报告了同样的问题 (link)。所以我认为自动端口转发坏了。

网络接口集成改进 Chrome80:尝试更新到测试版

  1. 转到设置
  2. 在左侧面板的底部,select关于ChromeOS。
  3. Select "Detailed build information" 或 "Additional details"
  4. 在 "Channel," 旁边 select 换频道。
  5. 选择"Beta"

我在 Chrome79 上也有一台 Pixelbook。您的代码将在 Firefox 上运行。要使其在 Chrome 浏览器上运行,您必须将 host 参数传递给 app.listen().

const express = require('express');
const app = express();

app.get('/', (req, res) => {
    res.send('Hello!');
});

const PORT = 8080;
const HOST = 'localhost';

app.listen(PORT, HOST, () => console.log(`Listening on port ${PORT}...`));