'प्रतिक्रिया-मूल प्रारंभ' पर त्रुटि कैसे हल करें


117
  1. मैंने अभी नोड.जेएस और क्लि स्थापित किया है

    • स्थापित नोड .js
    • स्थापित प्रतिक्रिया-देशी-क्ली

      npm -g react-native-cli
  2. और एक project नया प्रोजेक्ट ’बनाया।

    react-native init new_project
  3. और उस 'new_project' निर्देशिका के अंदर, मैं यह देखने के लिए थक गया कि क्या मेट्रो बंडल अच्छी तरह से काम करता है।

    react-native start
  4. लेकिन कमांड ने मुझे निम्नलिखित त्रुटि दी और मेट्रो शुरू नहीं हो रही है। इस त्रुटि को ठीक करने के लिए कोई सुराग? (मैं विंडोज़ 10 ओएस का उपयोग कर रहा हूं।)

    • आदेश: C:\projects\new_proj>react-native start

      त्रुटि अमान्य रेग्युलर एक्सप्रेशन: /(.\fixtures.pgnode_modules। ईड्रेसट्रैक्ट। इंडिड्सडिस्ट ईडिंग्स। पिंडवेबसाइट ENDnode_modules.pgheapCapture\bundle.js.net। अधिक विवरण के लिए CLI --verbose ध्वज के साथ चलाएँ। SyntaxError: अमान्य रेग्युलर एक्सप्रेशन: /(.Youfixtures.pgnode_modules। ईडीस्रियाडिक। ) ब्लैकलिस्ट पर (D: \ Projects \ new_proj \ node_modules \ metro-config \ src \ defaults \ blacklist.js: 34: 10) getBlacklistRE पर (D: \ प्रोजेक्ट्स 'new_proj \ नोड_modules \ react-native \ node_modules @ प्रतिक्रिया-देशी -DunDaultaultConfig पर Dununity \ cli \ build \ tools \ loadMetroConfig.js: 69: 59) (D: \ प्रोजेक्ट \ new_proj \ नोड_modules \ प्रतिक्रिया-मूल \ नोड_modules @ प्रतिक्रिया-मूल-समुदाय \ cli निर्माण \ load \ _MetroConfig : 85: 20) लोड पर (D:


जैसा कि उन्होंने कहा था कि Run CLI with --verbose flag for more details.शायद आप बैकस्लैश से बचना भूल गए हैं। Stackoverflow.com/questions/14639339/… देखें । अधिक विवरण के बिना नहीं कह सकते।
rhand

अगर आपके लिए नोड_मॉड्यूल में बस मेट्रो-कॉन्फिगर मौजूद नहीं है, तो नीचे दिए गए मेरे उत्तर की जाँच करें।
रात्रि

जवाबों:


249

मुझे आज पहली बार एक समान त्रुटि मिली। यह प्रकट होता है \node_modules\metro-config\src\defaults\blacklist.js, एक अमान्य नियमित अभिव्यक्ति है जिसे बदलने की आवश्यकता है। मैंने पहली अभिव्यक्ति इसके तहत बदल दी sharedBlacklistहै:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

सेवा:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

1
आपका बहुत बहुत धन्यवाद! मैंने आपके कहे अनुसार बदलाव किए और यह अब काम करता है। क्या मुझे इसे हर परियोजना पर संशोधित करना होगा या क्या विश्व स्तर पर इसे लागू करने का कोई तरीका है?
सॉन्ग केविन

11
Github पर क्वेरी से कुछ अन्य उत्तर मिला। - 'यह नोड v12.11.0 के कारण है, v12.10.0 के डाउनग्रेड से इसका समाधान होगा।' यह लियो से था। लेई। और मुझे यह भी देखने की जरूरत है कि यह काम करता है या नहीं।
गीत केविन

3
बहुत बढ़िया तय! बहुत बहुत धन्यवाद। रिएक्ट नेटिव ऐसी छोटी गाड़ी की तरह लगता है, भ्रष्ट npm कैश से, PERM त्रुटियों के लिए। इसे स्थापित करने के लिए मुझे दो दिन का समय लगा है।
एडनडी

4
/node_modules[\/\]react[\/\]dist[\/\].*/, बस इस लाइन परिवर्तन की जरूरत है
विवेक

1
आपका बहुत बहुत धन्यवाद! इससे मेरा बहुत समय बचता है। मैंने इस रात में v8.xx से v12.13.0 तक अपने Node.js को अपग्रेड किया है और फिर अचानक यह त्रुटि होती है, जिससे ऐप की शुरुआत विफल हो जाती है ... इस पोस्ट के बिना इस बग के कारण पता नहीं चला ...
garykwwong 16

107

यह नोड v12.11.0 के कारण होता है जिस तरह से यह इस समस्या को हल करने के दो तरीके नियमित स्थान से संबंधित है

विधि I

आप v12.10.0 को नोड डाउनग्रेड कर सकते हैं यह पार्सिंग त्रुटि से निपटने का सही तरीका लागू होगा

विधि II

आप स्थित फ़ाइल को बदलकर अपने मामले में नियमित अभिव्यक्ति को सही ढंग से समाप्त कर सकते हैं:

\node_modules\metro-config\src\defaults\blacklist.js

से:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

सेवा:

 var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

2
यह सुपर सहायक है, क्या आप लोग पुल अनुरोध नहीं कर सकते? को metro-configया expo-cli?
इसका 4zahoor

1
अक्टूबर में एक पुल अनुरोध वापस भेजा गया था: github.com/facebook/metro/commit/…
schellack

20

[शीघ्र जवाब]

कुछ एनपीएम और नोड संस्करणों का उपयोग करके मेट्रो के साथ एक समस्या है।

आप फ़ाइल में कुछ कोड बदलने की समस्या को ठीक कर सकते हैं \node_modules\metro-config\src\defaults\blacklist.js

इस चर को खोजें:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

और इसमें बदलाव करें:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

कृपया ध्यान दें कि यदि आप एक npm स्थापित या एक यार्न स्थापित चलाते हैं, तो आपको फिर से कोड बदलने की आवश्यकता है।


क्या यह समस्या डेवलपर्स द्वारा तय नहीं की जा सकती है? हर बार मैं यहां आ रहा हूं। धन्यवाद सर
हसन बसरी

1
हां, इन परिवर्तनों को करने वाले मेट्रो डेवलपर्स द्वारा समस्या को ठीक किया जा सकता है।
जेवियर सी।

2
धन्यवाद! यह तय!
रॉबर्ट

मुझे नहीं लगता कि यह अच्छा समाधान है। नोड_मॉड्यूल के अंदर फाइलों को संशोधित करना
कोडमाइंड

1
ध्यान दें कि यदि आप प्रतिक्रिया-मूल (उदाहरण के लिए 0.51.0) के पुराने संस्करण का उपयोग कर रहे हैं, तो बदले जाने वाली फ़ाइल इस पर है:.\node_modules\metro-bundler\src\blacklist.js
Venryx

20

आपके पास दो समाधान हैं:

या तो आप नोड को V12.10.0 पर डाउनग्रेड करते हैं या आप इस फ़ाइल को प्रत्येक प्रोजेक्ट के लिए संशोधित कर सकते हैं जो आप बनाएंगे।

नोड_मॉड्यूल / मेट्रो-कॉन्फिग / src / चूक / ब्लैकलिस्ट.जेएस इसे बदलें:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

इसके लिए:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

8

मुझे एक ही समस्या थी कि मैंने अपनी परियोजना में E: \ NodeJS \ ReactNativeApp \ ExpoTest \ node_modules \ metro-config \ src \ defaults \ blacklist.js को बदल दिया।

से

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
 /heapCapture\/bundle\.js/,
 /.*\/__tests__\/.*/
];

सेवा

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

यह मेरे लिए पूरी तरह से काम करता है


5

फिक्स के साथ एक पीआर को मेट्रो रिपॉजिटरी में विलय कर दिया गया है। अब हमें बस अगली रिलीज तक इंतजार करने की जरूरत है। अब के लिए सबसे अच्छा विकल्प NodeJS को डाउनग्रेड करना है v12.10.0। जैसा कि ब्रैंडन ने बताया, node_modules/इसा में कुछ भी संशोधित करना वास्तव में बुरा अभ्यास है और अंतिम समाधान नहीं होगा।


5

मेरे प्रोजेक्ट में मेट्रो-कॉन्फिगर नहीं है, अब क्या?

मैंने पाया है कि बहुत पुराने प्रोजेक्ट में नहीं metro-configहै node_modules। अगर आपके साथ भी ऐसा है, तो,

नोड_मॉड्यूल्स / मेट्रो-बंडलर / src / blacklist.js पर जाएं

और जैसा कि अन्य उत्तरों में बताया गया है, वैसा ही कदम उठाएं

बदलने के

var sharedBlacklist = [
    /node_modules[/\\]react[/\\]dist[/\\].*/,
    /website\/node_modules\/.*/,
    /heapCapture\/bundle\.js/,
    /.*\/__tests__\/.*/
];

साथ में

var sharedBlacklist = [
    /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
    /website\/node_modules\/.*/,
    /heapCapture\/bundle\.js/,
    /.*\/__tests__\/.*/
];

पुनश्च मैं परियोजनाओं के एक जोड़े में एक ही स्थिति का सामना करना पड़ा तो सोचा कि इसे साझा करने से किसी को मदद मिल सकती है।

संपादित करें

@Beltrone द्वारा टिप्पणी के अनुसार फ़ाइल में भी मौजूद हो सकता है

node_modules \ मेट्रो \ src \ blacklist.js


1
मदद की, लेकिन मेरे 360 init में फ़ाइल है MyProject\node_modules\metro\src\blacklist.js। चीयर्स।
बेल्ट्रोन

4

मुझे भी यही समस्या हुई।

"त्रुटि अमान्य रेगुलर एक्सप्रेशन: / (। \ जुड़नार । \ | node_modules [\] प्रतिक्रिया [\] जिले [\]। | वेबसाइट \ node_modules \। | heapCapture \ bundle.js |। \ परीक्षण \। ) $ /: असमाप्त चरित्र वर्ग। "

में नियमित अभिव्यक्ति बदलें \node_modules\metro-config\src\defaults\blacklist.js

से

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

सेवा

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

इस परिवर्तन से मेरी त्रुटि हल हो गई।


3

https://github.com/facebook/metro/issues/453

जिसके लिए अभी भी प्रतिक्रिया-मूलक, एक्सपो में आधिकारिक पैच के बिना यह त्रुटि मिलती है

यार्न का उपयोग करें और इस सेटिंग को package.json में जोड़ें

{
  ...
  "resolutions": {
    "metro-config": "bluelovers/metro-config-hotfix-0.56.x"
  },
 ...

2

के लिए जाओ

\ Node_modules \ मेट्रो-config \ src \ चूक \ blacklist.js

और इसे प्रतिस्थापित करें

var sharedBlacklist = [
/node_modules[/\\]react[/\\]dist[/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];

सेवा

var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];

यह सबसे अच्छा अभ्यास नहीं है और मेरी सिफारिश है: नोड संस्करण को 12.9 में डाउनग्रेड करें या जब वे नोड समस्या को ठीक कर रहे हैं तब मेट्रो-कॉन्फ़िगरेशन को अपडेट करें।


1

आप जा सकते हैं...

\ nit_modules \ metro-config \ src \ defaults \ blacklist.js और परिवर्तन ...

var sharedBlacklist = [   /node_modules[/\\]react[/\\]dist[/\\].*/,  
/website\/node_modules\/.*/,   /heapCapture\/bundle\.js/,  
/.*\/__tests__\/.*/ ];

इसके लिए:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

0

एक सामान्य नियम के रूप में, मैं node_modules/अगली साफ, बिल्ड या अपडेट के रूप में (या कुछ भी जो रिपॉजिटरी के हिस्से के रूप में प्रतिबद्ध नहीं होता है) के भीतर फाइलों को संशोधित नहीं करता, उन्हें फिर से हासिल करेगा। मैंने निश्चित रूप से अतीत में ऐसा किया है और इसने मुझे एक-दो बार काटा है। लेकिन यह अल्पकालिक / स्थानीय देव फिक्स के रूप में काम करता है जब तक कि / जब तक metro-configकि अद्यतन न हो।

धन्यवाद!


0

मैंने पाया कि regexp.source से बदला गया node v12.11.0, शायद नया v8इंजन उत्पन्न हुआ। https://github.com/nodejs/node/releases/tag/v12.11.0 पर अधिक देखें

D:\code\react-native>nvm use 12.10.0
Now using node v12.10.0 (64-bit)

D:\code\react-native>node
Welcome to Node.js v12.10.0.
Type ".help" for more information.
> /node_modules[/\\]react[/\\]dist[/\\].*/.source
'node_modules[\\/\\\\]react[\\/\\\\]dist[\\/\\\\].*'
> /node_modules[/\\]react[/\\]dist[/\\].*/.source.replace(/\//g, path.sep)
'node_modules[\\\\\\\\]react[\\\\\\\\]dist[\\\\\\\\].*'
>
(To exit, press ^C again or ^D or type .exit)
>

D:\code\react-native>nvm use 12.11.0
Now using node v12.11.0 (64-bit)

D:\code\react-native>node
Welcome to Node.js v12.11.0.
Type ".help" for more information.
> /node_modules[/\\]react[/\\]dist[/\\].*/.source
'node_modules[/\\\\]react[/\\\\]dist[/\\\\].*'
> /node_modules[/\\]react[/\\]dist[/\\].*/.source.replace(/\//g, path.sep)
'node_modules[\\\\\\]react[\\\\\\]dist[\\\\\\].*'
>
(To exit, press ^C again or ^D or type .exit)
>

D:\code\react-native>nvm use 12.13.0
Now using node v12.13.0 (64-bit)

D:\code\react-native>node
Welcome to Node.js v12.13.0.
Type ".help" for more information.
> /node_modules[/\\]react[/\\]dist[/\\].*/.source
'node_modules[/\\\\]react[/\\\\]dist[/\\\\].*'
> /node_modules[/\\]react[/\\]dist[/\\].*/.source.replace(/\//g, path.sep)
'node_modules[\\\\\\]react[\\\\\\]dist[\\\\\\].*'
>
(To exit, press ^C again or ^D or type .exit)
>

D:\code\react-native>nvm use 13.3.0
Now using node v13.3.0 (64-bit)

D:\code\react-native>node
Welcome to Node.js v13.3.0.
Type ".help" for more information.
> /node_modules[/\\]react[/\\]dist[/\\].*/.source
'node_modules[/\\\\]react[/\\\\]dist[/\\\\].*'
> /node_modules[/\\]react[/\\]dist[/\\].*/.source.replace(/\//g, path.sep)
'node_modules[\\\\\\]react[\\\\\\]dist[\\\\\\].*'
>

0

नवीनतम संस्करण के मेट्रो-विन्यास को स्थापित करके इसे ठीक करें (अब के लिए 0.57.0) उन्होंने समस्या तय की थी:

npm मेट्रो-कॉन्फिगर स्थापित करें

आप इसे बाद में हटा सकते हैं, प्रतिक्रिया-मूलक लोग मॉड्यूल संस्करण अपडेट करते हैं


यह मेरे लिए मदद नहीं करता है।
वेलिज़र एंड्रीव कितनोव

0

यार्न का उपयोग इस स्थिति को रोकता है। सूत का उपयोग करना चाहिए


0

विंडोज़ 10 पर मैं लिनक्स बैश शेल स्थापित करने की अत्यधिक सलाह देता हूं।

यहां इसे सेट करने के लिए एक अच्छा मार्गदर्शक है: https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/

बस चरणों का पालन करें, अपने लिनक्स वितरण का चयन करें और स्पष्ट अस्थिरता के बाद से cmd पर नोड के साथ काम करने से बचें।

ध्यान रखें कि Microsoft विंडोज सॉफ़्टवेयर के साथ लिनक्स फ़ाइलों को जोड़ने या संशोधित करने के खिलाफ दृढ़ता से चेतावनी देता है, जैसा कि यहाँ वर्णित है: howtogeek.com/261383/how-to-access-your-ubuntu-bash-files-in-windows-your-wour-windows- प्रणाली ड्राइव-इन-बैश /

आशा करता हूँ की ये काम करेगा!


0

मेरे पास अभी-अभी अद्यतन करने के लिए package.json है

"react-native": "https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz"

सेवा

"react-native": "https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz"

ऐसा लगता है कि समस्या sdk-36 में नहीं होगी !!

मेरा नोड संस्करण v12.16.0 है और ओएस win10 है


0

समाधान सरल है, लेकिन अस्थायी ...

ध्यान दें कि यदि आप चलाते हैं npm installया yarn installआपको फिर से कोड बदलने की आवश्यकता है!

तो, हम इसे अपने आप कैसे चला सकते हैं?

स्थायी समाधान

अपने नोड मॉड्यूल को स्थापित करने के बाद यह "स्वचालित रूप से" करने के लिए, आप उपयोग कर सकते हैं patch-package

  1. metro-configत्रुटि को हल करते हुए, फ़ाइल को ठीक करें :

फ़ाइल में दिखाई देता है \node_modules\metro-config\src\defaults\blacklist.js

इससे संपादित करें:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

सेवा:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
  1. फिर, एक स्थायी पैच फ़ाइल बनाएँ:

npx patch-package metro-config

  1. आपके package.jsonट्रिगर में पैच:
"scripts": {
+  "postinstall": "npx patch-package"
}

सब कुछ कर दिया! अब यह पैच प्रत्येक npm install/ पर बनाया जाएगा yarn install

Https://github.com/ds300/patch-package के लिए धन्यवाद

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.