web-dev-qa-db-ja.com

スクリプトをロードできません。Metroサーバーを実行していること、またはバンドル「index.Android.bundle」がリリース用に正しくパッケージされていることを確認してください。

react-native run-Androidコマンドは、Androidシミュレーターにメッセージを残して終了します。メッセージは次のとおりです。

「スクリプトをロードできません。Metroサーバーを実行しているか、バンドル「index.Android.bundle」がリリース用に正しくパッケージ化されていることを確認してください。」

私が間違っていることを完全に混乱させています。


編集:エラーのスクリーンショットの追加

enter image description here

123
Belle Solutions

バンドラーをまだ開始していません。実行npm startまたはreact-native startプロジェクトのルートディレクトリのreact-native run-Android

65
Nerdragen

これらの手順は本当に役立ちます:

ステップ1: Android/app/src/main/assetsにディレクトリを作成します

Linuxコマンドmkdir Android/app/src/main/assets

ステップ2:名前の変更index.Android.js(ルートディレクトリ内)からindex.jsたぶんindex.jsファイル。この場合、名前を変更する必要はありません)、次のコマンドを実行します。

react-native bundle --platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res

ステップ3: APKのビルド:react-native run-Android

最新バージョンではindex.jsを使用してください。

楽しい :)

41
Saeed

私にとって、このエラーはreact-nativeのアップグレードが原因でした

Android 9.0(APIレベル28)以降、デフォルトではクリアテキストのサポートは無効になっています。

アップグレード差分をチェックアウトする場合は、デバッグマニフェストを作成する必要がありますAndroid/app/src/debug/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools">
    <uses-permission Android:name="Android.permission.SYSTEM_ALERT_WINDOW"/>
    <application Android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
</manifest>

詳細情報を参照してください: https://stackoverflow.com/a/50834600/1713216

https://react-native-community.github.io/upgrade-helper/

35
Tom

最初にステップ4と5を実行して、プロジェクトを実行できます。

結果が得られない場合(ステップ4および5を使用)、以下のステップを実行します

1-​​= Nodeバージョン(現在のバージョンは12.13.1

  choco uninstall nodejs
  choco install nodejs --version 12.8

2- npmモジュールのパスを追加(C:\Users\your user name\AppData\Roaming\npm)ユーザー変数の代わりにシステム変数に

-コマンドを使用してグローバルにネイティブに反応するインストール

  npm install -g react-native-cli

4-プロジェクトディレクトリのルートに移動し、次のコマンドを実行します。

  react-native start

5-プロジェクトのルートで別のターミナルを開き、次のコマンドを実行します。

   react-native run-Android 

編集:

Genymotionを使用していますか?はいの場合、次の手順を実行します:

上記の手順の後、次のエラーが表示される場合は?

error Failed to launch emulator. Reason: No emulators found as an output of `emulator -list-avds`.

Genymotionを開き、次の場所に移動します。

genymotionメニュー->設定-> ADB ->次に、カスタムの使用を選択Android sdk tools(クリック参照してSDKの場所を見つけます)

最後に、プロジェクトを再度実行します..

20
AbolfazlR

node_modules\metro-config\src\defaults\blacklist.jsに3つのスプラッシュを追加するだけです

この部品を交換してください:

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

私と同様の問題が発生したようですマカフィーは8081ポートをブロックしているようです、これを理解するのに何時間もかかりました

react-native run-Android --port=1234を実行してみてください

エミュレーターでアプリにエラーが表示されたら、dev設定に入ります(crtl + Mをクリックしてアクセス可能)

「デバイスのデバッグサーバーホストとポート」を「localhost:1234」に変更します。

アプリを閉じて、アプリの引き出しから起動します

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

12
Naveen Kumar

以下を試すことができます:

AndroidManifest.xmlにこの行を追加します

<application
[...]
Android:usesCleartextTraffic="true"
/>
[...]
</application>
11
tinmarfrutos

ワークスペースでこの問題を解決しようとした後、解決策を見つけました。

このエラーは、NPMとNodeバージョン。

次の2つの選択肢があります。

  • 代替1: npmとノードバージョンの更新またはダウングレードを試みます。
  • 代替案2:このファイル:\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 installまたはyarn installを実行する場合、コードを再度変更する必要があることに注意してください。

9
Javier C.

すべてが正しく構成されている場合は、これを試してください:

adb reverse tcp:8081 tcp:8081

どうして? 「RNパッケージャーの実行中、ブラウザでアクセス可能なアクティブなWebサーバーが127.0.0.1:8081にあります。アプリケーションのJSバンドルが変更されると、このサーバーから提供され、更新されます。リバースプロキシがなければ、お使いの携帯電話はそのアドレスに接続できません。」

Swingline へのすべてのクレジット

8
Tua Tara

これは私のために働いたいくつかの方法を試した後。

ファイル内node_modules\metro-config\src\defaults\blacklist.js

置換:

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

with:

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

お役に立てれば。

6

答えを探して数時間後。解決策は、バージョン12.4へのダウングレードノードを作成することでした。

私の場合、バージョンリアクティブネイティブ0.60とノードバージョン12.6でエラーが発生することを認識しています。

5
Victor Araújo

これに対する私の解決策は次のとおりです:

Metroサーバーの起動

$ react-native start

Androidを起動します

$ react-native run-Android

「ポート8081が既に使用されています」というエラーが表示された場合、そのプロセスを強制終了して再実行できます。

$ react-native start

React Nativeトラブルシューティングページ を参照してください。

4
shizhen

Android 9.0(APIレベル28)以降、デフォルトではクリアテキストのサポートは無効になっています。

これは、通常の実行コマンドを適切に行う場合にこの問題を取り除くために必要なことです

  1. npmインストール
  2. 反応ネイティブ開始
  3. react-native run-Android

そして、Androidマニフェストファイルを次のように変更します。

<application
    Android:name=".MainApplication"
    Android:icon="@mipmap/ic_launcher"
    Android:usesCleartextTraffic="true" // add this line with TRUE Value.
Android:theme="@style/AppTheme">

私は同じトラブルを抱えていました、私にとっての問題はadbが正しい環境パスにないことでした、エラーはメトロポートを告げています。

環境変数の追加(ADB)

  1. 環境変数を開く
  2. 2番目のフレームから選択しますPATH変数、下の編集オプションをクリックします
  3. 追加オプションをクリックします
  4. SDKプラットフォームツールパスC:\ Users\My User\AppData\Local\Android\Sdk\platform-toolsを送信します

:または、マシンのadb.exeの場所に応じて

  1. 変更内容を保存

実行Android再ビルド

$ react-native run-Android

または

$ react-native start
$ react-native run-Android
3
CarlosChavarria

私のために働いた解決策は次のとおりです:

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

My code example

2

私もこの問題に直面しています。この次の手順を解決しました。

チェックAndroid 環境検証可能)のSDKパス

追加 Android_HOME = C:\Users\user_name\AppData\Local\Android\Sdk in システム変数
およびC:\Users\user_name\AppData\Local\Android\Sdk\platform-tools path in システム変数

sharedBlacklistの置き換え以下のコードセグメント、

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

in node_modules/metro-config/src/default/blacklist.js

次に、npx react-native run-Android --port 9001を実行します

ハッピーコーディング..!

2
Chanaka

以下を試してください。

  1. AndroidおよびIOSフォルダを削除
  2. 反応ネイティブイジェクトを実行する
  3. react-native run-Androidを実行します

たぶん、前の手順の後、npm start---reset-cacheを実行しています

私は働きます、それがあなたを助けることを望みます。

1
LuisO

私のWifiがエミュレータで誤ってオフになったからといって、これを経験しました。それが誰かに役立つことを願っています

1
Forest baba

私にとってこの問題は、react-nativeのアップグレードから始まりました。 64ビットサポートを追加するには、アップグレードが必要でした。

Before:
-------- 
Environment:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
Xcode: Not Found
Android Studio: 3.4 AI-183.6156.11.34.5692245

Packages: (wanted => installed)
react: 16.0.0-alpha.12 => 16.0.0-alpha.12
react-native: ~0.55.2 => 0.55.4
react-native-cli: 2.0.1

After:
------
info 
React Native Environment Info:
Binaries:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
SDKs:
Android SDK:
API Levels: 23, 26, 27, 28
Build Tools: 27.0.3, 28.0.3
System Images: Android-28 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: /undefined - /usr/bin/xcodebuild
npmPackages:
react: ^16.8.6 => 16.9.0 
react-native: 0.59.9 => 0.59.9 
npmGlobalPackages:
create-react-native-app: 2.0.2
react-native-cli: 2.0.1

また、アップグレードのために行った重要な変更の1つは../Android/build/build.gradleでした。

Android {
    ...
    defaultConfig {
        ...
        targetSdkVersion 28
        ...
    }
    ...
}

Build(.apk)をgooleプレイコンソールにアップロードしようとしたときに、警告に従ってtargetSdkVersionを27から28に変更する必要がありました。これが私にとって上記のエラーの根本的な原因であることに少しも気付きませんでした。 @tomと@tinmarfrutosによる即座の回答は、絶対的な意味を成していました。

Android:usesCleartextTraffic = "true"をAndroid/app/src/debug/AndroidManifest.xmlに追加して問題を解決しました

1
vivekkan

Linuxを使用している場合は、アプリのルートディレクトリからターミナルを開いて実行します

npm start

次に、別のターミナルウィンドウを開き、reactive-native run-aroundを実行します

1
solomon njobvu

重要-環境内に多数の仮想デバイスがある場合があります。 AVDを変更する場合は、設定を再度繰り返してください。

デバッグ情報-

上記のエラーが発生した場合は、最初にポート8081で実行されているものを確認する必要があります

それを見つける最も簡単な方法は、ターミナルで次のコマンドを使用することです

netstat -aon | findstr 8081

それが何かを示している場合、ポートがブロックされていることを意味します。可能であれば、そのポートのブロックを解除してください。

それ以外の場合は、ポートを変更する必要があります。そのためのプロセスは、Naveen Kumarによる上記のコメントですでに言及されています。

react-native run-Android --port=9001

9001が使用されていないことも確認してください:)

1
TARJU

このエラーの可能性も間違ったパスです、一度チェックしてください

 export Android_HOME=/Users/microrentindia/Library/Android/sdk/
 export PATH=$PATH:$Android_HOME/tools:$Android_HOME/platform-tools
1
user3143487

ここでは取り上げていない、明らかではない可能性を追加したいだけです。私は @ react-native-community/netinfo を使用して、ネットワークの変更(主にネットワークの状態)を検出しています。ネットワークオフ状態をテストするには、(エミュレータ上の)WIFIスイッチをオフにする必要があります。これにより、エミュレーターとデバッグ環境の間のブリッジも効果的に切断されます。私はコンピューターから離れていて、戻ったときにすぐにそれを忘れていたので、テスト後にWIFIを再度有効にしませんでした。

これは他の誰かにも当てはまる可能性があり、他の抜本的な手順を実行する前に確認する価値がある可能性があります。

1
arunmenon

また、ノードjsを12未満のバージョンにダウングレードし、nodemoduleを削除してからnpm installを再度実行することもできます

0

私がやったのは、react-native startとnpx react-native run-Androidです。

ただし、Min19の場合(Ubuntuベース)、実行するまで同じ問題が発生していました。

echo fs.inotify.max_user_watches=582222 | Sudo tee -a /etc/sysctl.conf && Sudo sysctl -p

From: https://reactnative.dev/docs/troubleshooting#content

少なくとも、携帯電話でアプリを実行しています。

0

エミュレータのエラーメッセージは誤解を招くようなものです。私の場合、Macbookを使用しました。 $ chmod 755 ./gradlewを実行してAndroid/gradlewの権限を変更する必要があり、その後アプリをビルドしてAndroidエミュレーターにデプロイできました。

0
Jane

デフォルトでは、「Metro Server」と呼ばれる小さなJavaScriptサーバーがポート8081で実行されます。

このサーバーを起動するには、このポートを使用可能にする必要があります。そう、

  1. ポートを解放する
  2. 仮想デバイスを閉じます
  3. 「react-native run-Android」をもう一度。

ポートを解放する方法は?

http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html

Windowsでローカルホストのポートを現在使用しているプロセスを強制終了する方法は?

そして最も重要なのは、facebook @ https://facebook.github.io/react-native/docsで示唆されているように、ノードバージョンを8.xから10.x(latest)にアップグレードしたことです。/getting-started

0
Karthik H

Linux OSで実行している場合、npmリモートサーバーが実行されていない場合があります。別のターミナル(プロジェクトディレクトリ)を開き、このコマンドを実行しますSudo npm startまたはSudo react-native startSudo react-native run-Android =

0
vicky keshri

私の場合、エミュレータにプロキシを設定しました。そのプロキシを削除すると、正常に戻ります。

0
Benson

場合によっては、React-native bundlerのポートを閉じて、同じプロセスでアプリを再実行したいかもしれません

1.Sudo kill -9 $(Sudo lsof -t -i:9001)

2.npm start inside the project

3. react-native run-Android
0
Varun Pradhan

私のために働いたのは:

  1. すべてのコンソールを閉じます
  2. 新しいコンソールを開く
  3. $ adb devices
  4. 接続されているデバイスが1つだけであることを確認してください
  5. $ react-native run-Android
0
dcx86

メトロブラックリストのこの部分を更新

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