web-dev-qa-db-ja.com

反応ネイティブアプリのエントリポイントを定義する方法

反応ネイティブを始めたばかりで、create-react-native-appを使用して基本アプリを作成しました。

私はいくつかの再構築を行い、いくつかの新しいフォルダーを作成し、App.jsの名前をHome.jsに変更しました。新しいapp.jsonファイルを参照するエントリポイントが含まれるようにHome.jsを変更しました。アプリをロードしても何も起こりません。エラーはなく、エキスポ画面に表示されたままです。

.
 -components
 -screens
    -Home
        Home.js
 -config
 -node_modules
 -tests
 app.json

app.jsonファイル:

{
  "expo": {
    "sdkVersion" : "23.0.0",
    "entryPoint" : "./screens/Home/Home.js"
  }
}

アプリのエントリポイントをどのように定義しますか?

10
TemporaryFix

expoを使用している場合は、次のように_app.json_ファイルでエントリポイントを指定する必要があります。

_{
  "expo": {
    "entryPoint": "./src/app/index.js"
  }
}
_

次に、そのファイル内でアプリをExpo.registerRootComponent(YOUR_MAIN_APP_COMPONENT)に登録する必要があります

_import Expo from 'expo'
...

class App extends Component {
  ...
}

export default Expo.registerRootComponent(App);
_

これにより、エントリファイルを好きな場所に追加できます。

17
Horacio Herrera

entryPointが_app.json_への新しいパスになるように、_App.js_を更新する必要があります。

_{
  "expo": {
    "entryPoint": "./src/App.js",
    ...
  }
}
_

ただし、Expo.registerRootComponent(App)を使用すると、SDK 32で次のエラーが発生します。

_undefined is not an object (evaluating '_expo.default.registerRootComponent') 
_

_Expo.registerRootComponent_を介してアクセスしようとするのではなく、registerRootComponentを明示的にインポートすることでfixedにすることができます。

以下は_App.js_のサンプルです。

_import { registerRootComponent } from 'expo';

class App extends React.Component {
  ...
}

export default registerRootComponent(App);
_
8
Andrew

Expoプロジェクトの場合

現在のExpoのドキュメントによると、App.jsファイルとは異なるエントリポイントが必要な場合は、package.jsonを更新できます-目的のエントリポイントへのパスでmainフィールドを追加します。次に、エントリポイントファイル内で、アプリのrootコンポーネントも登録する必要があります。エントリポイントが指定されておらず、App.jsファイルの場合、Expoはこれを自動的に実行していました

package.json

{
 "main": "my/customEntry.js"
}

entryPointFile.js

import { registerRootComponent } from 'expo';
import MyRootComponent from './MyRoot';

registerRootComponent(MyRootComponent);

メインアプリファイルにApp.js以外の名前を付けたい場合はどうすればよいですか? - https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my

2
kidroca

反応ネイティブスクリプトでプロジェクトを作成しました。 app(App.js)のデフォルトのエントリポイントでは、エントリからインポートするAppをエクスポートします。

- node_modules
- App.js
- build
    - main.js

ファイルApp.js:

import App from './build/main'
export default App
1
HungCung

また、たとえばsrc /のように、すべてのソースを別のフォルダに置くことを好み、別の解決策を見つけました。

  1. expo cliによって生成されたpackage.jsonで、メイン属性がnode_modules/expo/AppEntry.jsであることがわかります。
  2. node_modules/expo/AppEntry.jssrc/expoAppEntry.jsにコピーし、アプリのインポートをimport App from './App';に変更して、ポイントするようにしました* src/App.tsx`に
  3. その後、もちろん、package.jsonのメイン属性をsrc/expoAppEntry.jsに変更しました。

ここで実際の例を見てください https://github.com/fibo/tris3d-app/blob/master/src/expoAppEntry.js

0
Gianluca Casati