create-react-appベースのプロジェクトを実行するポートを指定するにはどうすればよいですか?


212

私のプロジェクトはcreate-react-appに基づいていますnpm startまたはyarn startデフォルトでポート3000でアプリケーションを実行し、package.jsonでポートを指定するオプションはありません。

この場合、どのようにして選択したポートを指定できますか?私はこのプロジェクトの2つを同時に(テストのために)実行したいと思います。1つはポートで3005、もう1つは3006


4
Next.jsプロジェクトのnext -p 3005場合、誰かがここに来て同じものを探している場合にのみ使用することをここで簡単に説明します。
giovannipds 2018年

回答:


397

環境変数を設定したくない場合は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


33
Windowsの場合:"start": "set PORT=3005 && react-scripts start"
Jacob Ensor

3
ubuntuの場合:"start": "export PORT=3006 react-scripts start"私のために働いた
Isaac Pak 2017年

Windowsの場合、PORT = 3005を設定して&react-scriptsが私のために動作し始めました:)
Skylin R

2
"start": "export PORT=3001 && react-scripts start"これはUbuntu 16で私のために機能しました
コードクッカー

2
@ElRusoプロジェクトが特定の環境でのみ使用されている場合、私は同意します。のようなユースケースcross-envは、複数の開発者が異なるシステムで作業している場合です。おそらくMACを好む人もいれば、Windowsを好む人もいます。または、別のシナリオでは、すべての開発者がWindowsを使用していますが、Ubuntuを実行するCI / CDサーバーで実行される環境変数を追加したいとします。お役に立てば幸いです。
MauricioLeal

132

このタスクを実行する別の方法を次に示します。

.envプロジェクトのルートにファイルを作成し、そこにポート番号を指定します。お気に入り:

PORT=3005

2
.envファイルの使用は、そのままでcreate-react-appでサポートされています。機密情報をそこに配置する場合は、.envをソース管理にチェックインしないでください。
ドン

11
作成反応するアプリに記載の方法であって、README.md
トラビススチール

3
彼らは、ファイル内の機密データを置くことを言っている、実際@carkod より.env。彼らの場合、.env.localソース管理に安全にチェックインできるように、ソース管理にチェックインすべきでないものを使用することを勧めています.env。したがって、同じアドバイスが適用されます。
Don

1
他の解決策はトリック/ハックのように感じられるが、それは利用可能な構成オプションを利用するので、私はこの答えがより好きです。
ハンスウターズ2018

1
これは、MacOSXとWindowsで同じpackage.jsonファイルを使用して機能します。
キースジョンハッチソン、

25

cross-envを使用してポートを設定すると、Windows、Linux、Macで動作します。

yarn add -D cross-env

次に、package.jsonの開始リンクは次のようになります。

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

これはまさに私が必要としたものです。ほとんどの一般的なプラットフォームでうまく機能するものは、たとえば私の家のセットアップはWindowsで、動作するのはMacです。
イコスミン

23

という名前の環境変数PORTを指定して、サーバーが実行されるポートを指定できます。

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

1
2つの反応アプリケーションを実行します。1つはポート3005に、もう1つは3006にある必要があります
letthefireflieslive

1
@lem 2つのコンソールを開き、それぞれの環境変数を3005および3006に設定して、アプリケーションを実行できます。
Harshil Lodhi

1
"start": "set PORT=3005 react-scripts start"ポートを設定するだけでアプリは実行されません
letthefireflieslive '11 / 11/22

5
@legnobanは、2つのコマンドの間に&&を追加します。"start": "set PORT=3005 && react-scripts start"
Jacob Ensor

5

私のWindowsの人々のために、ReactJSポートを変更して任意のポートで実行する方法を発見しました。サーバーを実行する前に、

 node_modules/react-scripts/scripts/start.js

その中で、以下の行を検索し、ポート番号を目的のポートに変更します

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

そして、あなたは行ってもいいです。


13
注意:node_modulesディレクトリ内で行った変更は、パッケージが更新されると吹き飛ばされます。おそらく他の答えの1つを使用するのが最善です。
ドン

彼らがこのファイルを設定した場所についての洞察を提供するため、賛成票を投じました(ここでは、create-react-appがカーテンの後ろで何をするのかを理解しようとしているときにここで終わりました)
ozgeneral

4

.envほかにメインディレクトリに名前を付けてファイルを作成し、変数を目的のポート番号にpackage.json設定しPORTます。

例えば:

.env

PORT=4200

これはイジェクトがなくても機能し、ドキュメントに記載されている方法です
Akshay Vijay Jain

@AkshayVijayJainご意見をお寄せいただきありがとうございます。回答を編集しました。
ムハンマドオズドガン

3

少しだけ更新してwebpack.config.jsください:

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

その後、npm start再度実行します。


3

あなたにはpackage.json、スクリプトや使用に行く--port 4000か、set PORT=4000以下の例のように、:

package.json (ウィンドウズ):

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

package.json (Ubuntu):

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

2
コードの意図を説明するために少し文章を追加することを検討してください。
entpnerd

2

これはWindowsとLinuxの両方で機能します

package.json

"scripts": {
    "start": "(set PORT=3006 || export PORT=3006) && react-scripts start"
    ...
}

しかし、PORT = 3006が記述された.envを作成することをお勧めします


Windowsでは機能しません:'PORT' is not recognized as an internal or external command, operable program or batch file.
mgPePe

指摘してくれてありがとう。コマンドを修正しました。今すぐ試すことができます。
Metu

1

私のpackage.jsonファイルの変更"start": "export PORT=3001 && react-scripts start"も私にとってはうまくいき、macOS 10.13.4を使っています


1

要約すると、これを達成するための3つのアプローチがあります。

  1. 「PORT」という名前の環境変数を設定します
  2. package.jsonの「scripts」部分の下にある「start」キーを変更します
  3. .envファイルを作成し、PORT構成をその中に配置します

最もポータブルなものが最後のアプローチになります。ただし、他の投稿者が述べたように、構成をパブリックソースリポジトリにアップロードしないようにするには、.gitignoreに.envを追加します。

詳細:この記事


1

アプリの起動時にデフォルトのポート設定を見つけることができます

yourapp / scripts / start.js

下にスクロールして、ポートを任意に変更します

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

これがあなたに役立つことを願っています;)


create-react-appにスクリプトdirがありません
AlxVallejo

1
この答えを機能させるには、yarn eject最初に行う必要があります。
Zach Bloomquist


0

3000コマンドラインパラメータまたは環境変数として、以外のポートを指定できると便利です。

現在、プロセスはかなり複雑です。

  1. 走る npm run eject
  2. それが完了するのを待ちます
  3. 編集してscripts/start.js3000使用したいポートに置き換えます。
  4. 編集config/webpack.config.dev.jsして同じことを行う
  5. npm start

私はすでに3000を使用して別のサーバーを持っているとき、はい、私は(のみ)、コマンドライン変数としてポートを指定できるようにしたいのですが
SherylHohman

0

Windowsでは、2つの方法で実行できます。

  1. 「\ node_modules \ react-scripts \ scripts \ start.js」で、「DEFAULT_PORT」を検索し、目的のポート番号を追加します。

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

  2. package.jsonで、以下の行を追加します。"start": "set PORT = 9999 && react-scripts start"次に、NPM startを使用してアプリケーションを開始します。9999ポートでアプリケーションを起動します。


0

アプリケーションコードや環境ファイルで何も変更せずに、コマンドを呼び出すときにポート番号を指定するのはどうですか。このようにして、複数の異なるポートから同じコードベースを実行および提供することができます。

お気に入り:

$ export PORT=4000 && npm start

4000上記の例の値の代わりに、好きなポート番号を指定できます。


0

既に実行している場合はnpm run eject、scripts / start.jsに移動し、ポートconst DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;(この場合は3000)を任意のポートに変更します。


-1

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;

保存して終了


3
もちろん、その変更はあなただけが利用でき、次にを実行しnpm/yarn installたときに破棄される可能性があります。でのファイルの変更node_modulesは避けてください。
MEMark
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.