我有一个 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] 删除。
我来说两句