angular Universalをプロジェクトに統合し、AngularFireライブラリを使用したいのですが、npm run build && npm run serve:ssrを実行してアプリをローカルでテストする場合、.
このエラーがあります
webpack:///./dist/server/main.js?:95613
throw err;
^
Error: ENOENT: no such file or directory, open 'google/protobuf/api.proto'
at Object.openSync (fs.js:440:3)
at Object.readFileSync (fs.js:342:35)
at fetch (webpack:///./dist/server/main.js?:95679:34)
at Root.load (webpack:///./dist/server/main.js?:95713:13)
at Root.loadSync (webpack:///./dist/server/main.js?:95754:17)
at Object.loadSync (webpack:///./dist/server/main.js?:133270:17)
at Object.8ZNE (webpack:///./dist/server/main.js?:98662:37)
at __webpack_require__ (webpack:///./dist/server/main.js?:20:30)
at Object.BYZf (webpack:///./dist/server/main.js?:104679:19)
at __webpack_require__ (webpack:///./dist/server/main.js?:20:30) {
errno: -2,
syscall: 'open',
code: 'ENOENT',
path: 'google/protobuf/api.proto'
@ essemoon によって提供されるソリューションを適用すると、エラーが修正されました。 firebase serve
の実行はうまくいきました。ただし、firebase deploy
を実行すると、別の問題cannot find module @firebase/firestore
が発生しました。多くの試行の後、私は解決策を見つけることができました。
@ essemoon によって予測されるように、最初に@firebase/firestore
をangular.json
の外部依存関係として次のように追加します
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/TeacherKellyUKA/server",
"main": "server.ts",
"tsConfig": "tsconfig.server.json",
"externalDependencies": ["@firebase/firestore"]
},
次に、functions
ディレクトリに移動し、@firebase/firestore
およびfirebase/app
パッケージをインストールします。
cd functions
npm i @firebase/app @firebase/firestore
これで、アプリを実行できます。これでうまくいきました。それがあなたのためになることを願っています。
これはAngularFirestoreModuleの問題です。 package.jsonの以下の行を更新しましたが、正常に動作しています。私はangularバージョン8を使用しています。
「bundleDependencies all」から「bundleDependencies none」
"build:client-and-server-bundles": "ng build --prod && ng run web:server:production --bundleDependencies none"