Angular アプリケーションでの認証に msal.js を使用しています。これは、を使用した開発ビルドでは問題なく機能しng serve
ます。残念ながら、ノードを使用してサーバー ビルドを実行しようとすると、このライブラリでエラーが発生します。このビルドは を使用して生成され、 を使用npm run build:prod
して提供されnpm run server
ます。ノードを使用してこれを提供しようとすると、次のエラーが発生します。
/Users/mikey/Documents/projectname-angular8/dist/server.js:170525
class WindowWrapper extends Window {
^
ReferenceError: Window is not defined
at Module.<anonymous> (/Users/mikey/Documents/projectname-angular8/dist/server.js:170525:29)
at __webpack_require__ (/Users/mikey/Documents/projectname-angular8/dist/server.js:21:30)
at Object.@azure/msal-angular/dist/msal.module (/Users/mikey/Documents/projectname-angular8/dist/server.js:148059:18)
at __webpack_require__ (/Users/mikey/Documents/projectname-angular8/dist/server.js:141641:30)
at Object../src/app/app.server.module.ngfactory.js (/Users/mikey/Documents/projectname-angular8/dist/server.js:142963:13)
at __webpack_require__ (/Users/mikey/Documents/projectname-angular8/dist/server.js:141641:30)
at Object../src/main.server.ts (/Users/mikey/Documents/projectname-angular8/dist/server.js:147883:37)
at __webpack_require__ (/Users/mikey/Documents/projectname-angular8/dist/server.js:141641:30)
at Object.0 (/Users/mikey/Documents/projectname-angular8/dist/server.js:147904:18)
at __webpack_require__ (/Users/mikey/Documents/projectname-angular8/dist/server.js:141641:30)
エラーが発生する理由は理解できますが、このサードパーティ ライブラリが必要であるため、プロジェクトからこのパッケージをまとめて削除することはできません。コードのこの部分だけを読み込もうとapp.browser.module.ts
しましたが、サーバー側のバージョンをブラウザで実行しようとすると、インジェクション エラーが発生します。
このサードパーティ ライブラリを使用しながら、このプロジェクトの実行可能なサーバー側ビルドを作成する方法を誰かが説明してくれることを願っています。