--> -->

skimemo


skimemo - 日記/2019-06-17/NativeScriptのwebpack適用で注意すること のバックアップ(No.2)


_ NativeScriptのwebpack適用で注意すること

当初特にwebpack(--bundleオプション)の事など気にせずに開発してきて、途中で適用しようと思ったら色々エラーが出たのでそのメモです。

[もくじ]

_ app-main.xmlが無いと言われる

開発中のアプリは、起動時にapp.jsでログイン中か判断し、app-login.xml(未ログイン)かapp-main.xml(ログイン済み)かを切り分けています。その時使用しているのがapplication.run()です。

ところが、webpack適用時にapplication.run()を使用するのにはある制限があります。それが、ページ名の最後が root か page でなければならないです。このルールに則っていない場合、ページが見つからないというエラーが出ます。

[コード]

  1
  2
  3
  4
  5
  6
  7
if(loginManager.isLogin()){
    // ログイン済みページ
    application.run({ moduleName: "app-main" });
} else {
    // ログインor登録ページ
    application.run({ moduleName: "app-login" });
} 

[エラー]

System.err: Error: Failed to load component from module: ./app-login.xml or file: null

参考 Cannot navigate to a page with relative path using the @next version of the plugin

以下のようにコードを修正したら無事動くようになりました。

  1
  2
  3
  4
  5
  6
  7
if(loginManager.isLogin()){
    // ログイン済みページ
    application.run({ moduleName: "app-main-page" });
} else {
    // ログインor登録ページ
    application.run({ moduleName: "app-login-page" });
} 

_ nativescript-master-technology 使用時

nativescript-master-technologyは、アプリを終了させたり、現在がdebugモードか知る際に便利なプラグインです。readmeにもprocess.exit()のように書けば良いように記述されていますし、実際それで動作していました(webpack適用前は)。

しかし、webpack適用時は以下のように記述する必要があります。

global.process.exit();

global定義されたもは全てこのようにしなければいけないのかというとそういうわけでは無いようで、他のものはglobalを付けなくても動いていたりします。まだ良く理解できてない・・・。

Category: [NativeScript] - 09:29:44