在 macOS 上,请考虑以下脚本server.js
:
const http = require("http");
const port = 3000;
const requestListener = function (req, res) {
res.writeHead(200);
res.end("My first server!");
};
const server = http.createServer(requestListener);
server.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
使用 运行它node server.js
。然后启动 Docusaurus 项目(在我的例子中运行在 v2.1.0 上)。文档服务器将在端口 3000 上启动,尽管该端口很忙。如果您随后在 Chrome 中打开 Docusaurus:
它打开我的服务器。
但是,如果我使用curl,我会得到 docusaurus 页面!
如果我的服务器通过主机:
- server.listen(port, () => {
+ server.listen(port, "localhost", () => {
然后 Docusaurus 将正确识别该端口正忙并询问我是否要选择另一个端口。尽管如此,我将其视为 Docusaurus 或其依赖项之一中的错误。
可能的解决方案
尽管使用的人较少,但这种查找空闲端口的逻辑现在可以在 Remotion 中使用,并且不会出现错误报告:https://github.com/remotion-dev/remotion/blob/main/packages/renderer/src/get-port .ts
我很高兴在 Discord 上讨论如何一起调查它!
可重现的演示没有反应
重现步骤如上
预期行为繁忙端口检测启动并询问是否应使用不同的端口
实际行为服务器启动并产生冲突
您的环境- Docusaurus 使用版本:v2.1.0
- 环境名称和版本(例如 Chrome 89、Node.js 16.4):Node 16.7
- 操作系统和版本(例如Ubuntu 20.04.2 LTS):macOS