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

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


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

$ export PORT=3005 #Linux
$ $env:PORT=3005 # Windows - Powershell

如果不想设置环境变量,另一个选项是修改包的脚本部分。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。下面是为什么在大多数情况下使用环境变量更好的解释。以下是为什么在环境中存储秘密是一个坏主意的解释。


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

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

PORT=3005

对于我的windows朋友们,我发现了一种改变ReactJS端口的方法,可以在任何你想要的端口上运行。在运行服务器之前,请转到

 node_modules/react-scripts/scripts/start.js

在其中,搜索下面的行并将端口号更改为所需的端口

 var DEFAULT_PORT = process.env.PORT || *4000*;

这样就可以开始了。


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

yourapp/scripts/start.js

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

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

希望这对你有所帮助;)


如果能够指定不是3000的端口(作为命令行参数或环境变量),那就太好了。

现在,这个过程相当复杂:

运行npm Run eject 等待它完成 编辑scripts/start.js,用你想使用的任何端口找到/替换3000 编辑config/webpack.config.dev.js并执行同样的操作 npm开始


你可以使用cross-env来设置端口,它可以在Windows、Linux和Mac上工作。

yarn add -D cross-env

然后是包装。Json的开始链接可以是这样的:

"start": "cross-env PORT=3006 react-scripts start",

在我的包里换衣服。“export PORT=3001 && react-scripts start”也适用于我,我在macOS 10.13.4上


只需在webpack.config.js中更新一点:

devServer: {
    historyApiFallback: true,
    contentBase: './',
    port: 3000 // <--- Add this line and choose your own port number
}

然后再次运行NPM start。


总之,我们有三种方法来实现这一目标:

设置名为“PORT”的环境变量 修改package.json中“scripts”部分的“start”键 创建一个.env文件,并将PORT配置放在其中

最可移植的方法是最后一种方法。但正如其他帖子所提到的,将.env添加到.gitignore中,以避免将配置上传到公共源存储库。

更多细节:这篇文章


在Windows中可以通过两种方式实现。

在“\node_modules\react-scripts\scripts\start.js”下搜索 “DEFAULT_PORT”并添加所需的端口号。 例如:const DEFAULT_PORT = parseInt(process.env. port = parseInt)端口,10)|| 9999; 在包中。Json,追加下面的行。 "start": "set PORT=9999 && response -scripts start" 然后使用NPM start启动应用程序。它将在9999启动应用程序 端口。


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

如:

$ export PORT=4000 && npm start

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

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

如:

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

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


在你的包裹里。在脚本中使用——port 4000或set port =4000,如下例所示:

包中。json (Windows):

"scripts": {
    "start": "set PORT=4000 && react-scripts start"
}

包中。json (Ubuntu):

"scripts": {
    "start": "export PORT=4000 && react-scripts start"
}

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

例如:

.env

PORT=4200

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


试试这个:

npm start port=30022

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


为什么不干脆

PORT=3030 npm run start

只需运行下面的命令

PORT=3001 npm start

这适用于Linux基本操作系统

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

在Windows上的Powershell中(以管理员身份运行):

(cd到你的CRA应用程序根文件夹)

env:港= 3002元;npm起飞


对于windows操作系统,可直接在cmd命令下执行此命令

set PORT=3001 && npm start

我只是在项目的根目录中创建了.env,并更改PORT=3001


你可以在package.json中修改你的脚本:

- MacOs:

"scripts": {
     "start": "PORT=9002 react-scripts start",
     "build": "react-scripts build",
     ...     
}

在窗户

  "scripts": {
      "start": "set PORT=9002 && react-scripts start",
      "build": "react-scripts build",
      ...
}

方法1

在项目的根目录下创建.env文件

像这样设置

PORT=3005

方法2

在package.json

set PORT=3006 && react-scripts start

在我的例子中,我的react项目有两个文件:.env和.env.development。

我把这个添加到.env.development中,让它与npm start命令一起工作,用于开发:

PORT=3001

如果你在Dockerfile中运行npm start,你不能在docker运行中映射端口,比如做一些类似-p 3001:3000的事情,这是有效的:

FROM node

ENV PORT=3001

# whatever here, COPY .. etc.

CMD npm start

或者你可以在docker build中传递端口号作为参数:

FROM node

ARG PORT=${PORT}
ENV PORT=${PORT}

# whatever here, COPY .. etc.

CMD npm start

在docker build中使用——build-arg

docker build --build-arg PORT=3001 .

编辑webpack.config.js并添加你想要在其上运行的端口。这就是你要找的东西:

’devServer: 港口:3005。 historyApiFallback: true, ),

and

输出:{ publicPath:“http://localhost: 3005 /”, },


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

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

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

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

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


可以在包中指定端口。通过定义端口号:

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

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

PORT=3003 npm start

您需要更新您的软件包。json来指定不同的PORT

在脚本部分,替换start命令如下:—

确保所提到的PORT可以自由监听

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

您的应用程序将从http://localhost:3001开始

谢谢


对于windows,使用cmd

set PORT=3001 && npm start

很多答案都没有提到windows的一个关键部分。对我来说,在windows中的指定端口运行react应用程序的工作是使用以下命令。您可以从下面的示例更改端口号。别忘了用&&。

set PORT=4200 && react-scripts start