liferay-npm-bundler でサードパーティの JS パッケージをインポートすると、"Cannot use import statement outside a module" となります。
knowledge-article-header-disclaimer-how-to
knowledge-article-header-disclaimer
legacy-article
learn-legacy-article-disclaimer-text
決議
- この問題は、バンドルラー v.2 の既知の制限事項であり、同じトピックはここで議論されました。 https://github。com/liferay/liferay-js-toolkit/issues/261
詳細を見ると、バンドルラーは常にサードパーティのモジュールがCommonJS/ES5形式であることを期待しています。しかし、特定のライブラリでは、 import
/export
ステートメントにES5の構文が混ざっていて、バンドルラーが理解できないため、最終的なJARに直接入れられてしまい、ミニファイヤーがフラグを立ててしまい、ブラウザでの解決に失敗してしまいます。 そういえば、2つの回避策があります。
1) バンドルラーの代わりにプロジェクトをwebpackでバンドルし、手動でポートレットに統合する
2) バンドルラーが起動する頃には、モジュールがインポート/エクスポート形式からCommonJSに移されているようにビルドを微調整する。 これは、バンドルの前に babel
を呼び出すか、バンドルの babel-loader プラグインを使ってモジュールを transpile することで実現できます。
上記のアプローチが確実に動作することを保証することはできません。 エンジニアは今後のバージョン3のバンドルでWebpack的な機能を実装できるように頑張ります。
did-this-article-resolve-your-issue