我的项目基于create-react-app。默认情况下,npm start
或yarn start
将在端口3000 上运行应用程序,并且无法在package.json中指定端口。
在这种情况下,如何指定我选择的端口?我想同时运行这个项目中的两个(用于测试),一个在端口3005
中,另一个在3006
答案 0 :(得分:199)
如果您不想设置environment variable,另一个选项是修改package.json的scripts
部分:
"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"
由于我的回答非常流行而更新:目前我更喜欢使用保存在.env
文件中的环境变量(用于存储不同deploy
配置的变量集一种方便易读的形式)。如果您仍然将秘密存储在*.env
文件中,请不要忘记将.gitignore
添加到.env
。 Here解释了为什么在大多数情况下使用环境变量更好。 Here解释了为什么在环境中存储秘密是个坏主意。
答案 1 :(得分:72)
这是完成此任务的另一种方法。
在项目根目录下创建一个.env文件,并在那里指定端口号。像:
PORT = 3005
答案 2 :(得分:20)
在.env
以外的主目录中创建一个名称为package.json
的文件,并将PORT
变量设置为所需的端口号。
例如:
.env
PORT=4200
您可以在以下位置找到此操作的文档:https://create-react-app.dev/docs/advanced-configuration
答案 3 :(得分:17)
您可以指定名为DECLARE @Query VARCHAR(100),@Date VARCHAR(100)
SELECT @Date = '2016-11-01'
SELECT @Query = 'dbo.SP_GetData '''+@Date+''''
INSERT INTO #tmpTable
EXEC (@Query)
的环境变量,以指定服务器将在其上运行的端口。
PORT
答案 4 :(得分:13)
您可以使用cross-env设置端口,它可以在Windows,Linux和Mac上运行。
yarn add -D cross-env
然后在package.json中,start链接可能是这样的:
"start": "cross-env PORT=3006 react-scripts start",
答案 5 :(得分:7)
在您的package.json
中,转到脚本并使用--port 4000
或set PORT=4000
,如下例所示:
package.json
(Windows):
"scripts": {
"start": "set PORT=4000 && react-scripts start"
}
package.json
(Ubuntu):
"scripts": {
"start": "export PORT=4000 && react-scripts start"
}
答案 6 :(得分:2)
对于windows,可以直接在cmd上运行这个命令
set PORT=3001 && npm start
答案 7 :(得分:2)
为什么不只是
PORT=3030 npm run start
答案 8 :(得分:2)
只需更新webpack.config.js
中的一点:
devServer: {
historyApiFallback: true,
contentBase: './',
port: 3000 // <--- Add this line and choose your own port number
}
然后再次运行npm start
。
答案 9 :(得分:2)
对于我的Windows人员,我发现了一种方法可以将ReactJS端口更改为在您想要的任何端口上运行。在运行服务器之前,请转到
node_modules/react-scripts/scripts/start.js
在其中,搜索下面的行并将端口号更改为所需的端口
var DEFAULT_PORT = process.env.PORT || *4000*;
你很高兴。
答案 10 :(得分:1)
总而言之,我们有三种方法可以完成此任务:
最便携的将是最后一种方法。但是,正如其他发布者所述,请将.env添加到.gitignore中,以免将配置上传到公共源存储库中。
更多详细信息:this article
答案 11 :(得分:1)
这在Windows和Linux上均可使用
package.json
"scripts": {
"start": "set PORT=3006 && PORT=3006 react-scripts start || react-scripts start"
...
}
但是您可能更喜欢使用写在其中的PORT = 3006创建.env。
答案 12 :(得分:1)
我的package.json文件中更改"start": "export PORT=3001 && react-scripts start"
也适用于我,我在macOS 10.13.4
答案 13 :(得分:1)
尝试一下:
npm start port=30022
答案 14 :(得分:1)
您可以在启动应用时找到默认端口配置
yourapp/scripts/start.js
向下滚动并将端口更改为您想要的任何内容
const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 4000;
希望这可以帮到你;)
答案 15 :(得分:1)
只需在命令下运行
PORT=3001 npm start
答案 16 :(得分:0)
在Windows中,可以通过两种方式完成。
在“ \ node_modules \ react-scripts \ scripts \ start.js”下,搜索 “ DEFAULT_PORT”并添加所需的端口号。
例如:const DEFAULT_PORT = parseInt(process.env.PORT,10)|| 9999;
在package.json中,出现以下行。 “ start”:“设置PORT = 9999 && react-scripts开始” 然后使用NPM start启动应用程序。它将在9999年启动该应用程序 端口。
答案 17 :(得分:0)
在调用命令时提供端口号而不需要更改应用程序代码或环境文件中的内容如何?这样就可以从几个不同的端口运行和提供相同的代码库。
喜欢:
$ export PORT=4000 && npm start
您可以将所需的端口号替换为上面的示例值4000
。
答案 18 :(得分:0)
如果您已经完成'
,请转到scripts / start.js并将npm run eject
中的端口(在本例中为3000)更改为所需的端口。
答案 19 :(得分:0)
这适用于 Linux Elementary OS
"start": "PORT=3500 react-scripts start"
答案 20 :(得分:0)
在 Windows 上的 Powershell 中(以管理员身份运行):
(cd 到您的 CRA 应用根文件夹)
$env:PORT=3002 ; npm 启动
答案 21 :(得分:-1)
能够指定3000
以外的端口,作为命令行参数或环境变量,将会很高兴。
现在,这个过程非常复杂:
npm run eject
scripts/start.js
并使用您要使用的任何端口查找/替换3000
config/webpack.config.dev.js
并执行相同的操作npm start