Oluşturma-tepki-uygulama tabanlı bir projeyi çalıştırmak için bir bağlantı noktası nasıl belirtilir?


217

Projem create-tepki-uygulamasını temel alıyor . npm startveya yarn startvarsayılan olarak uygulamayı 3000 numaralı bağlantı noktasında çalıştırır ve package.json içinde bir bağlantı noktası belirtme seçeneği yoktur.

Bu durumda seçtiğim bir bağlantı noktasını nasıl belirleyebilirim? Bu projeden iki tanesini aynı anda (test için) çalıştırmak istiyorum, biri limanda 3005, diğeri ise3006


4
Next.js projeleri next -p 3005için, burada başka biri aynı şeyi ararken buraya düşerse kullanacağınızı hızlı bir şekilde belirtin .
giovannipds

Yanıtlar:


408

Ortam değişkenini ayarlamak istemiyorsanız , başka bir seçenek scriptspackage.json kısmını şu şekilde değiştirmek :

"start": "react-scripts start"

için

Linux (Ubuntu 14.04 / 16.04'te test edildi ) ve MacOS (MacOS Sierra 10.12.4'te @ aswin-s tarafından test edildi):

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

veya @IsaacPak tarafından daha genel bir çözüm olabilir

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

Windows @JacobEnsor çözümü

"start": "set PORT=3006 && react-scripts start"

cross-env lib her yerde çalışır. Ayrıntılar için Aguinaldo Possatto cevabına bakınız.

Cevabımın popülaritesi nedeniyle güncelleme: Şu anda .envdosyaya kaydedilmiş ortam değişkenlerini kullanmayı tercih ediyorum (farklı deploykonfigürasyonlar için değişken setlerini uygun ve okunabilir bir şekilde saklamak için yararlıdır ). Eklemeyi unutmayın *.enviçine .gitignoreyine de sırlarını saklamak eğer .envdosyalar. İşte ortam değişkenleri kullanarak çoğu durumda neden daha iyi olduğunu açıklamasıdır. İşte sırları çevrede saklamanın neden kötü bir fikir olduğunu açıklıyor.


33
Windows için:"start": "set PORT=3005 && react-scripts start"
Jacob Ensor

3
ubuntu için: "start": "export PORT=3006 react-scripts start"benim için çalıştı
Isaac Pak

Windows için PORT = 3005 && tepki komut dosyaları benim için çalışmaya başladı :)
Skylin R

2
"start": "export PORT=3001 && react-scripts start"Bu benim için Ubuntu 16'da çalıştı
Code Cooker

2
@ElRuso Proje sadece belirli bir ortamda kullanılıyorsa, katılıyorum. Bunun gibi bir durum için kullanım durumu cross-env, farklı sistemler üzerinde çalışan birkaç geliştiricinizin olduğu zamandır. Belki bazıları MAC'leri, bazıları ise Windows'u tercih eder. Veya başka bir senaryoda, tüm geliştiriciler Windows'u kullanır, ancak Ubuntu çalıştıran CI / CD sunucunuzda çalıştırılacak bir Ortam Değişkeni eklemek istersiniz. Umarım bu yardımcı olur.
MauricioLeal

133

İşte bu görevi yerine getirmenin başka bir yolu.

.envProje kökünüzde bir dosya oluşturun ve orada bağlantı noktası numarasını belirtin. Sevmek:

PORT=3005

2
Bir .env dosyası kullanmak, create-reakt-app ile birlikte kutudan çıkarılır. Hassas bilgileri oraya koyarsanız, .env'yi kaynak kontrolüne kontrol etmediğinizden emin olun.
Don

12
Bu, create-tepki-uygulaması README.md'de
Travis Steel

3
@carkod Aslında, onlar bir dosyada hassas verileri koymak için söylediğini öteki daha .env. Onların durumunda .env.local, kaynak kontrolüne güvenli bir şekilde kontrol edebilmeniz .enviçin kaynak kontrolünü kontrol etmemeniz gerektiğini kullanmanızı önerirler. Aynı tavsiye hala geçerlidir.
Don

1
Bu cevabı daha çok seviyorum, çünkü mevcut yapılandırma seçeneklerini kullanıyor, diğer çözümler daha çok hile / hack gibi geliyor.
Hans Wouters

1
Bu, MacOSX ve Windows için aynı package.json dosyasıyla çalışır.
Keith John Hutchison

25

Bağlantı noktasını ayarlamak için cross-env kullanabilirsiniz ve Windows, Linux ve Mac üzerinde çalışacaktır.

yarn add -D cross-env

sonra package.json içinde başlangıç ​​bağlantısı şöyle olabilir:

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

Tam da ihtiyacım olan şey bu. En yaygın platformlarda iyi çalışabilen bir şey, örneğin ev kurulumum Windows ve iş Mac'tir.
icosmin

23

PORTSunucunun çalışacağı bağlantı noktasını belirtmek için adlı bir ortam değişkeni belirtebilirsiniz.

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

1
iki tepki uygulaması çalıştıracağım, biri liman 3005 ve diğeri 3006 olmalıdır
letthefireflieslive

1
@ lem İki konsol açabilir, ortam değişkenlerini her birinde 3005 ve 3006 olarak ayarlayabilir ve uygulamayı çalıştırabilirsiniz.
Harshil Lodhi

1
"start": "set PORT=3005 react-scripts start"sadece bağlantı noktasını ayarlayın ancak uygulamayı çalıştırmaz
letthefireflieslive

5
@legnoban 2 komut arasına bir && ekleyin. "start": "set PORT=3005 && react-scripts start"
Jacob Ensor

5

Windows kullanıcılarım için ReactJS portunu istediğiniz herhangi bir portta çalışacak şekilde değiştirmenin bir yolunu keşfettim. Sunucuyu çalıştırmadan önce

 node_modules/react-scripts/scripts/start.js

İçinde, aşağıdaki satırı arayın ve bağlantı noktası numarasını istediğiniz bağlantı noktasına değiştirin

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

Ve gitmekte fayda var.


13
Dikkat: node_modulespaketler güncellendiğinde dizinde yaptığınız değişiklikler patlayacaktır. Muhtemelen diğer cevaplardan birini kullanmak en iyisidir.
Don

bu dosyayı nereye yerleştirdikleri hakkında fikir verdiğinden (yalnızca create-tepki-uygulamanın perdenin arkasında ne yaptığını anlamaya çalışırken burada sona erdi)
ozgeneral

5

Yanında .envana dizinde adla bir dosya oluşturun package.jsonve PORTdeğişkeni istenen bağlantı noktası numarasına ayarlayın.

Örneğin:

.env

PORT=4200

bu çıkarılmadan bile çalışacaktır ve belgelerde açıklanan yöntemdir
Akshay Vijay Jain

@AkshayVijayJain Geri bildiriminiz için teşekkür ederiz Cevabı düzenledim.
Muhammed Özdoğan

3

Biraz güncellemeniz yeterlidir webpack.config.js:

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

sonra npm starttekrar çalıştırın .


3

Gözlerinde farklı package.json, komut ve kullanım gitmek --port 4000veya set PORT=4000örneğin aşağıda olduğu gibi:

package.json (Pencereler):

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

package.json (Ubuntu):

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

2
Kodunuzun amacını açıklamak için biraz düz yazı ekleyin.
entpnerd

3

Bu hem Windows hem de Linux'ta çalışır

package.json

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

ancak içinde yazılmış PORT = 3006 ile .env oluşturmayı tercih edersiniz


pencerelerde çalışmaz:'PORT' is not recognized as an internal or external command, operable program or batch file.
mgPePe

Gösterdiğiniz için teşekkürler. Komutu düzelttim, şimdi deneyebilirsiniz.
Metu

1

Benim package.json dosyasında değiştirme "start": "export PORT=3001 && react-scripts start"benim için çok çalıştı ve ben MacOS 10.13.4 çıkıyorum


1

Özetlemek gerekirse, bunu gerçekleştirmek için üç yaklaşımımız vardır:

  1. "PORT" adlı bir ortam değişkeni ayarlama
  2. Package.json dosyasının "script" bölümündeki "start" anahtarını değiştirin
  3. Bir .env dosyası oluşturun ve PORT yapılandırmasını bu dosyaya yerleştirin

En taşınabilir olanı son yaklaşım olacaktır. Ancak diğer posterin belirttiği gibi, yapılandırmayı genel kaynak havuzuna yüklememek için .gitignore dosyasına .env'yi ekleyin.

Daha fazla detay: bu makale


1

uygulamanızı başlattığınızda varsayılan bağlantı noktası yapılandırmasını bulabilirsiniz

YourApp / komut / start.js

aşağı kaydırın ve bağlantı noktasını istediğiniz gibi değiştirin

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

Umarım bu size yardımcı olabilir;)


Benim create-tepki-app hiçbir script dir
AlxVallejo

1
Bu cevabın çalışması için yarn ejectönce yapmanız gerekir .
Zach Bloomquist


0

3000Komut satırı parametresi veya ortam değişkeni dışında bir bağlantı noktası belirtmek iyi olur .

Şu anda süreç oldukça ilgili:

  1. Çalıştırmak npm run eject
  2. Bunun bitmesini bekleyin
  3. Kullanmak istediğiniz bağlantı noktasını düzenleyin scripts/start.jsve bulun / değiştirin3000
  4. Düzen config/webpack.config.dev.jsve aynı şeyi
  5. npm start

evet, bağlantı noktasını komut satırı değişkeni olarak belirtmek istiyorum, (yalnızca) zaten 3000 kullanan başka bir sunucum olduğunda.
SherylHohman

0

Windows'da 2 şekilde yapılabilir.

  1. "\ Node_modules \ reakt-scripts \ scripts \ start.js" altında, "DEFAULT_PORT" için arama yapın ve arzu bağlantı noktası numarasını ekleyin.

    Örneğin: const DEFAULT_PORT = parseInt (process.env.PORT, 10) || 9999;

  2. Package.json içinde aşağıdaki satırı ekleyin. "start": "set PORT = 9999 && tepki-scriptleri başla" NPM başlatmayı kullanarak uygulamayı başlatın. Uygulamayı 9999 bağlantı noktasında başlatacaktır.


0

Komutu çağırırken uygulama kodunuzda veya ortam dosyalarınızda herhangi bir değişiklik yapmanıza gerek kalmadan bağlantı noktası numarasını vermeye ne dersiniz? Bu şekilde birkaç farklı porttan aynı kod tabanının çalıştırılması ve sunulması mümkündür.

sevmek:

$ export PORT=4000 && npm start

İstediğiniz port numarasını 4000yukarıdaki örnek değerin yerine koyabilirsiniz .


0

Daha önce npm run ejectyapmışsanız, komut dosyalarına / start.js'ye gidin ve const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;(bu örnekte 3000) içindeki bağlantı noktasını istediğiniz bağlantı noktasına değiştirin.


-1

React-App'teki varsayılan bağlantı noktasını değiştirme

cd /your/project/project_name/node_modules/react-scripts/scripts/
vim start.js

Bu satıra git:

// Tools like Cloud9 rely on this.
const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
const HOST = process.env.HOST || '0.0.0.0';

Port numarasını port numaranızla değiştirin

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

Örneğin:

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

Kaydet ve çık


3
Bu değişiklik elbette sadece sizin için mevcut olacak ve bir dahaki sefere çalıştırıldığında muhtemelen yok edilecek npm/yarn install. Dosyaların değiştirilmesinden node_moduleskaçınılmalıdır.
MEMark
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.