如何指定一个端口来运行基于create-react-app的项目?

时间:2016-11-21 07:07:24

标签: reactjs npm

我的项目基于create-react-app。默认情况下,npm startyarn start将在端口3000 上运行应用程序,并且无法在package.json中指定端口。

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

22 个答案:

答案 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添加到.envHere解释了为什么在大多数情况下使用环境变量更好。 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 4000set 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)

总而言之,我们有三种方法可以完成此任务:

  1. 设置一个名为“ PORT”的环境变量
  2. 修改package.json的“脚本”部分下的“开始”键
  3. 创建一个.env文件并将PORT配置放入其中

最便携的将是最后一种方法。但是,正如其他发布者所述,请将.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中,可以通过两种方式完成。

  1. 在“ \ node_modules \ react-scripts \ scripts \ start.js”下,搜索 “ DEFAULT_PORT”并添加所需的端口号。

    例如:const DEFAULT_PORT = parseInt(process.env.PORT,10)|| 9999;

  2. 在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以外的端口,作为命令行参数或环境变量,将会很高兴。

现在,这个过程非常复杂:

  1. 运行npm run eject
  2. 等待完成
  3. 修改scripts/start.js并使用您要使用的任何端口查找/替换3000
  4. 修改config/webpack.config.dev.js并执行相同的操作
  5. npm start