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

let*_*ive 141 npm reactjs

我的项目基于create-react-app.npm start或者yarn start默认情况下将在端口3000上运行应用程序,并且没有在package.json中指定端口的选项.

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

El *_*uso 271

如果您不想设置环境变量,另一个选项是修改scriptspackage.json 的部分:

"start": "react-scripts start"
Run Code Online (Sandbox Code Playgroud)

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

"start": "PORT=3006 react-scripts start"
Run Code Online (Sandbox Code Playgroud)

或者(可能)@IsaacPak提供更一般的解决方案

"start": "export PORT=3006 react-scripts start"
Run Code Online (Sandbox Code Playgroud)

Windows @JacobEnsor解决方案

"start": "set PORT=3006 && react-scripts start"
Run Code Online (Sandbox Code Playgroud)

由于我的答案的流行而更新:目前我更喜欢使用保存在.env文件中的环境变量(用于以deploy方便和可读的形式存储不同配置的变量集).不要忘记添加*.env.gitignore如果你还在存储你的秘密.env文件.以下是为什么在大多数情况下使用环境变量更好的原因.这里解释为什么在环境中存储秘密是个坏主意.

  • 对于Windows:`"start":"set PORT = 3005 && react-scripts start"` (26认同)
  • 您还可以安装 `cross-env` 包并执行 `"start": "cross-env PORT=3006 react-scripts start"`。这在任何环境下都适用。 (9认同)
  • 对于ubuntu:`“ start”:“ export PORT = 3006 react-scripts start”`为我工作 (3认同)
  • @ElRuso 如果该项目仅在特定环境中使用,我同意,这是矫枉过正。“跨环境”之类的用例是当您有多个开发人员在不同的系统上工作时。也许有些人更喜欢 MAC,而另一些人则更喜欢 Windows。或者,另一种情况是,所有开发人员都使用 Windows,但您想要添加一个环境变量,该变量将在运行 Ubuntu 的 CI/CD 服务器上运行。我希望这有帮助。 (3认同)
  • 在 Mac OS 环境(或者我收集的 Ubuntu 也应该可以)上,您需要在命令之间添加 && 或用“;”终止每个命令。像这样: "start": "export PORT=3006 && react-scripts start" (@mim 提供的答案 (3认同)
  • `“ start”:“ export PORT = 3001 && react-scripts start”`这在Ubuntu 16中为我工作 (2认同)

Sha*_*eed 88

这是完成此任务的另一种方法.

在项目根目录下创建.env文件并在那里指定端口号.喜欢:

PORT = 3005

  • 我更喜欢这个答案,因为它利用了可用的配置选项,而其他解决方案更像是技巧/技巧。 (7认同)
  • 这是create-react-app [README.md]中描述的方法(https://github.com/facebookincubator/create-react-app/blob/4cdd5ac/packages/react-scripts/template/README.md#高级配置) (6认同)
  • 这适用于具有相同 package.json 文件的 MacOSX 和 Windows。 (3认同)
  • 使用create-react-app开箱即可使用.env文件.如果您将敏感信息放在那里,请确保不要将.env检查到源代码管理中. (2认同)
  • @carkod实际上,他们说将敏感数据放在*.env`以外的文件中*.在他们的情况下,他们建议使用`.env.local`,你不应该检查源代码控制,以便你可以安全地检查`.env`到源代码管理.所以同样的建议仍然适用. (2认同)
  • 这应该是最好的答案 (2认同)

Muh*_*gan 61

.env此外package.json,在主目录中创建一个具有名称的文件,并将PORT变量设置为所需的端口号。

例如:

.env

PORT=4200
Run Code Online (Sandbox Code Playgroud)

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


lav*_*ava 57

方法一

在项目根文件夹中创建 .env 文件

在此输入图像描述

像这样设置

PORT=3005
Run Code Online (Sandbox Code Playgroud)

方法二

在此输入图像描述

package.json中

set PORT=3006 && react-scripts start
Run Code Online (Sandbox Code Playgroud)

  • Mac 的“导出 PORT=3006” (3认同)

小智 22

对于windows,可以直接在cmd上运行此命令

set PORT=3001 && npm start
Run Code Online (Sandbox Code Playgroud)


Met*_*etu 20

这适用于 Windows 和 Linux(不适用于 Mac)

包.json

"scripts": {
    "start": "(set PORT=3006 || export PORT=3006) && react-scripts start"
    ...
}
Run Code Online (Sandbox Code Playgroud)

但您可能更喜欢创建 .env 并在其中写入 PORT=3006


Har*_*dhi 19

您可以指定一个名为的环境变量,以PORT指定服务器将在其上运行的端口.

$ export PORT=3005 #Linux
$ $env:PORT=3005 # Windows - Powershell
Run Code Online (Sandbox Code Playgroud)

  • @legnoban在两个命令之间添加一个&&.`"start":"设置PORT = 3005 && react-scripts start"` (5认同)
  • `"start": "set PORT=3005 react-scripts start"` 只是设置端口但不运行应用程序 (3认同)
  • 我将运行两个 React 应用程序,一个必须在端口 3005 上,另一个应该在端口 3006 上 (2认同)
  • @lem您可以打开两个控制台,在每个控制台中将环境变量设置为 3005 和 3006,然后运行应用程序。 (2认同)

小智 17

您可以修改package.json中的脚本

-在 MacO 上:

"scripts": {
     "start": "PORT=9002 react-scripts start",
     "build": "react-scripts build",
     ...     
}
Run Code Online (Sandbox Code Playgroud)

-在 Windows 上

  "scripts": {
      "start": "set PORT=9002 && react-scripts start",
      "build": "react-scripts build",
      ...
}
Run Code Online (Sandbox Code Playgroud)


小智 14

在您的 中package.json,转到脚本并使用--port 4000set PORT=4000,如下例所示:

package.json (视窗):

"scripts": {
    "start": "set PORT=4000 && react-scripts start"
}
Run Code Online (Sandbox Code Playgroud)

package.json (乌班图):

"scripts": {
    "start": "export PORT=4000 && react-scripts start"
}
Run Code Online (Sandbox Code Playgroud)

  • 考虑添加一些散文来解释代码的意图。 (2认同)

小智 13

您可以使用cross-env来设置端口,它可以在Windows,Linux和Mac上运行.

yarn add -D cross-env
Run Code Online (Sandbox Code Playgroud)

然后在package.json中,start链接可能是这样的:

"start": "cross-env PORT=3006 react-scripts start",
Run Code Online (Sandbox Code Playgroud)


Bem*_*iel 12

这适用于 Linux Elementary OS

"start": "PORT=3500 react-scripts start"
Run Code Online (Sandbox Code Playgroud)


ole*_*nko 10

为什么不只是

PORT=3030 npm run start
Run Code Online (Sandbox Code Playgroud)


Sur*_*h B 10

要指定一个端口来运行基于 Create React App (CRA) 的项目,您可以使用 PORT 环境变量。默认情况下,CRA 使用端口 3000,但您可以使用自定义端口号覆盖它。您可以这样做:

  1. 打开终端或命令提示符
  2. 导航到 CRA 项目的根目录。
  3. 将 PORT 环境变量设置为所需的端口号。例如,要在端口 8000 上运行,可以使用以下命令:

在 macOS/Linux 上:

PORT=8000 npm start
Run Code Online (Sandbox Code Playgroud)

在 Windows 上(命令提示符)

set PORT=8000 && npm start
Run Code Online (Sandbox Code Playgroud)

在 Windows 上(PowerShell):

$env:PORT = 8000; npm start
Run Code Online (Sandbox Code Playgroud)

此命令在执行 npm start 命令之前将 PORT 环境变量设置为 8000,该命令启动开发服务器。


sur*_*day 7

很多答案都没有提到Windows的一个关键部分。对我来说,在 Windows 中的指定端口中运行 React 应用程序的方法是使用以下命令。您可以从下面的示例中更改端口号。不要忘记使用&&。

set PORT=4200 && react-scripts start
Run Code Online (Sandbox Code Playgroud)


Ayo*_*eji 6

对于我的 Windows 人员,我发现了一种更改 ReactJS 端口以在您想要的任何端口上运行的方法。在运行服务器之前转到

 node_modules/react-scripts/scripts/start.js
Run Code Online (Sandbox Code Playgroud)

在其中,搜索下面的行并将端口号更改为您想要的端口

 var DEFAULT_PORT = process.env.PORT || *4000*;
Run Code Online (Sandbox Code Playgroud)

你很高兴去。

  • 当心:当软件包更新时,您在 `node_modules` 目录中所做的更改将被吹走。可能最好使用其他答案之一。 (17认同)

Kai*_*ary 6

只需运行以下命令

PORT=3001 npm start
Run Code Online (Sandbox Code Playgroud)

  • 也适用于纱线启动。 (2认同)

小智 5

您可以在启动应用程序时找到默认端口配置

yourapp/scripts/start.js

向下滚动并将端口更改为您想要的端口

const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 4000;

希望这可以帮助你;)

  • 为了使这个答案起作用,您需要首先“纱线弹出”。 (2认同)

San*_*gar 5

只需更新一点webpack.config.js

devServer: {
    historyApiFallback: true,
    contentBase: './',
    port: 3000 // <--- Add this line and choose your own port number
}
Run Code Online (Sandbox Code Playgroud)

然后npm start再次运行。


Sel*_*çuk 5

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

喜欢:

$ export PORT=4000 && npm start

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

您也可以在package.json 脚本中使用相同的表达式。

喜欢:

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

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


小智 5

可以在 package.json 中通过定义端口号来指定 Port:

"scripts": {
"start": "PORT=3006 react-scripts start"}
Run Code Online (Sandbox Code Playgroud)

或者可以在终端中运行脚本时指定端口:

PORT=3003 npm start
Run Code Online (Sandbox Code Playgroud)