反应中的冲突端口号

杰尔

我有一个 React 应用程序,我将 server.js 中的端口号指定为

const port = process.argv[3] || 3500;

在同一个文件的底部,我写道:

app.listen(port, () => console.log(`Web service running on port ${port}`));

虽然该应用程序能够在我的浏览器中运行,但不幸的是,在我的文本编辑器的控制台中,即使 url 显示 localhost:3000,它也会显示 Web 服务在端口 3500 上运行。

我知道 React 使用端口 3000 作为默认端口...但不知道为什么应用程序选择使用端口 3000 而不是我上面指定的端口 3500。

为了尝试解决这个问题,我尝试安装 dev 依赖 cross-env,并在我的 package.json “start”脚本中指定了 cross-env PORT=3500。

更改后,我看到我的 React 应用程序现在在端口 3500 上的浏览​​器中运行......但我无法避免来自 server.js 文件的消息,该消息显示“Web 服务在我指定的端口 #上运行server.js 文件“.

在 server.js 中,当我const port = process.argv[3] || 3500;与 package.json 中的跨环境端口 3500 更改结合使用时...我收到消息“端口 3500 上已经有东西在运行”。因此,似乎不可能在端口 3500 上的浏览​​器中获得正确的控制台消息,即 React 应用程序确实正常运行。

下面是完整的 Express server.js:

const jsonServer = require("json-server");
const chokidar = require("chokidar");
const cors = require("cors");

const fileName = process.argv[2] || "./data.js";
const port = process.argv[3] || 3500;

let router = undefined;

const app = express();

const createServer = () => {
  delete require.cache[require.resolve(fileName)];
  setTimeout(() => {
    router = jsonServer.router(fileName.endsWith(".js")
      ? require(fileName)() : fileName)
  }, 100)
}
createServer();

app.use(cors());
app.use(jsonServer.bodyParser)
app.use("/api", (req, resp, next) => router(req, resp, next));

chokidar.watch(fileName).on("change", () => {
  console.log("Reloading web service data...");
  createServer()
  console.log("Reloading web service data complete.");
});

app.listen(port, () => console.log(`Web service running on port ${port}`));```
萨钦·阿南塔库玛

快速服务器:

您可以在您希望它运行的任何端口中运行快速服务器

const port = process.env.port || 4000 //? can be any port number

您在编辑器中获得的控制台日志来自服务器,而不是来自 React 应用程序。

反应应用程序:

默认情况下,反应应用程序在端口 3000 中运行,如果您想更改反应应用程序的端口,请react-scripts像这样使用

"start": "set PORT= <Your Desired Port> && react-scripts start"

或者您可以像这样直接从终端设置端口

PORT=4000 npm start //? or any other port number

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章