我的项目是基于创建-反应-应用程序。NPM启动或yarn启动默认将在端口3000上运行应用程序,在package.json中没有指定端口的选项。

在这种情况下,如何指定自己选择的端口?我想同时运行这个项目的两个(用于测试),一个在端口3005,另一个是3006


当前回答

在调用命令时给出端口号,而不需要更改应用程序代码或环境文件中的任何内容,怎么样?这样就可以从几个不同的端口运行和服务相同的代码库。

如:

$ export PORT=4000 && npm start

您可以用您喜欢的端口号来代替上面的示例值4000。

您可以在包中使用相同的表达式。Json脚本。

如:

"start": "export PORT=4000 response -scripts start"

但对于后者,您将需要更改包。但是,对于前者,除了从命令行调用的端口值外,您不会更改任何内容。

其他回答

这里有另一种方法来完成这项任务。

在项目根目录下创建一个.env文件,并指定端口号。如:

PORT=3005

在espackage旁边的主目录中创建一个名为.env的文件。将PORT变量设置为所需的端口号。

例如:

.env

PORT=4200

您可以在这里找到该操作的文档:https://create-react-app.dev/docs/advanced-configuration

如果你已经做了npm run eject,去scripts/start.js并在const DEFAULT_PORT = parseInt(process.env. js)中更改port。端口,10)|| 3000;(在本例中为3000)到您想要的任何端口。

如果不想设置环境变量,另一个选项是修改包的脚本部分。json:

"start": "react-scripts start"

to

Linux(在Ubuntu 14.04/16.04上测试)和MacOS(在MacOS Sierra 10.12.4上由aswin-s测试):

"start": "PORT=3006 react-scripts start"

或者(可能)IsaacPak的更通用的解决方案

"start": "export PORT=3006 react-scripts start"

Windows JacobEnsor的解决方案

"start": "set PORT=3006 && react-scripts start"

跨环境图书馆在任何地方都有效。详见Aguinaldo Possatto的回答

更新是因为我的回答很受欢迎:目前我更喜欢使用保存在.env文件中的环境变量(以方便和可读的形式存储不同部署配置的变量集很有用)。别忘了加上*。如果你仍然将秘密存储在。Env文件中,Env转换为。gitignore。下面是为什么在大多数情况下使用环境变量更好的解释。以下是为什么在环境中存储秘密是一个坏主意的解释。

编辑您的项目/包。json文件。

进入脚本部分。将开始键对应的值更新为以下内容。

"start": "export PORT=4000;react-scripts开始”

现在你的React应用程序将在http://localhost:4000/上运行

注意:您可以使用任何端口号,但最好避免众所周知的端口号,如22,21,80等。