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

时间:2020-01-09 05:50:13

标签: google-chrome-os chromebook crostini

我有一台Chrome 79上的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处监听-我尝试了,并且 确实如此 工作。

有什么区别?如何使我的应用程序在localhost上运行?

几个月前我最后一次尝试时,我感觉像是在工作,但现在却不起作用,我不知道为什么。我尝试使用其他端口并重新启动计算机,但没有任何改变。

编辑:我已经看过Google演示了端口转发应该在此处自动运行的Google演示:https://youtu.be/pRlh8LX4kQI?t=1160-但这似乎不适合我。

编辑2:如果我用ip addr show | grep inet找到了我的容器的IP(对我来说是100.115.92.199),然后尝试在端口8080上工作。另外,我在Reddit上发现有人报告相同的问题(link)。因此,我认为自动端口转发已损坏。

2 个答案:

答案 0 :(得分:1)

Chrome 80改进了网络接口集成:请尝试更新到测试版

  1. 转到设置
  2. 在左侧面板的底部,选择关于Chrome操作系统。
  3. 选择“详细的构建信息”或“其他详细信息”
  4. 在“频道”旁边,选择“更改频道”。
  5. 选择“测试版”

答案 1 :(得分:1)

我在Chrome 79上也有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}...`));