我的项目基于create-react-app。npm start
或yarn start
默认情况下将在端口3000上运行该应用程序,并且在package.json中没有指定端口的选项。
在这种情况下,如何指定自己选择的端口?我想同时运行此项目的两个(用于测试),一个在端口3005
,另一个在3006
我的项目基于create-react-app。npm start
或yarn start
默认情况下将在端口3000上运行该应用程序,并且在package.json中没有指定端口的选项。
在这种情况下,如何指定自己选择的端口?我想同时运行此项目的两个(用于测试),一个在端口3005
,另一个在3006
Answers:
如果您不想设置环境变量,另一个选择是从以下位置修改scripts
package.json 的一部分:
"start": "react-scripts start"
至
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"
cross-env lib随处可见。有关详细信息,请参见Aguinaldo Possatto 答案
由于我的答案越来越流行,因此进行更新:当前,我更喜欢使用.env
文件中保存的环境变量(用于以deploy
方便易读的形式存储用于不同配置的变量集)。不要忘记添加*.env
到.gitignore
如果你还在存储你的秘密.env
文件。这是为什么在大多数情况下使用环境变量更好的解释。这是为什么在环境中存储秘密不是一个好主意的解释。
"start": "set PORT=3005 && react-scripts start"
"start": "export PORT=3006 react-scripts start"
为我工作
"start": "export PORT=3001 && react-scripts start"
这是我在Ubuntu 16
cross-env
是当您有多个开发人员在不同的系统上工作时。也许有些人喜欢MAC,而另一些人则喜欢Windows。或者,在另一种情况下,所有开发人员都使用Windows,但是您想添加一个环境变量,该变量将在运行Ubuntu的CI / CD服务器上运行。希望对您有所帮助。
这是完成此任务的另一种方法。
.env
在项目根目录下创建一个文件,并在其中指定端口号。喜欢:
PORT=3005
.env
。在他们的案例中,他们建议您使用.env.local
不应该检查源代码控制的代码,以便可以安全地检查.env
源代码控制。因此,同样的建议仍然适用。
您可以指定一个名为的环境变量,以PORT
指定服务器将在其上运行的端口。
$ export PORT=3005 #Linux
$ $env:PORT=3005 # Windows - Powershell
"start": "set PORT=3005 react-scripts start"
只是设置端口但不运行应用程序
"start": "set PORT=3005 && react-scripts start"
对于Windows亲朋好友,我发现了一种更改ReactJS端口以在所需端口上运行的方法。在运行服务器之前,请转到
node_modules/react-scripts/scripts/start.js
在其中搜索下面的行,并将端口号更改为所需的端口
var DEFAULT_PORT = process.env.PORT || *4000*;
而且你很好。
node_modules
更新软件包时,您在目录内所做的更改将被删除。可能最好使用其他答案之一。
.env
除了在主目录中创建名称外的文件,package.json
然后将PORT
变量设置为所需的端口号。
例如:
.env
PORT=4200
只需更新一下webpack.config.js
:
devServer: {
historyApiFallback: true,
contentBase: './',
port: 3000 // <--- Add this line and choose your own port number
}
然后npm start
再次运行。
在Windows和Linux上均可使用
package.json
"scripts": {
"start": "(set PORT=3006 || export PORT=3006) && react-scripts start"
...
}
但是您可能更喜欢使用在其中写入PORT = 3006的方式来创建.env
'PORT' is not recognized as an internal or external command, operable program or batch file.
在我的package.json文件中"start": "export PORT=3001 && react-scripts start"
进行更改也对我有用,并且我在macOS 10.13.4上
您可以在启动应用程序时找到默认端口配置
yourapp / scripts / start.js
向下滚动并将端口更改为所需的端口
const DEFAULT_PORT = parseInt(process.env.PORT,10)|| 4000;
希望这可以对您有所帮助;)
yarn eject
首先。
能够将除以外的其他端口指定3000
为命令行参数或环境变量会很好。
现在,这个过程非常复杂:
npm run eject
scripts/start.js
和查找/替换3000
您要使用的任何端口config/webpack.config.dev.js
并执行相同的操作npm start
如果已经完成npm run eject
,请转至scripts / start.js并将port in const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
(在本例中为3000)更改为所需的任何端口。
在React-App上更改默认端口
cd /your/project/project_name/node_modules/react-scripts/scripts/
vim start.js
转到此行:
// Tools like Cloud9 rely on this.
const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
const HOST = process.env.HOST || '0.0.0.0';
用您的端口号更改端口号
const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
例如:
const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3100;
保存并退出
npm/yarn install
。node_modules
应避免更改文件。
next -p 3005
如果其他人在这里寻找相同的东西,您将使用它。