web-dev-qa-db-ja.com

エラー:ENOENT:そのようなファイルまたはディレクトリはありません。「google / protobuf / api.proto」を開いてください

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'
4
Dsam

@ essemoon によって提供されるソリューションを適用すると、エラーが修正されました。 firebase serveの実行はうまくいきました。ただし、firebase deployを実行すると、別の問題cannot find module @firebase/firestoreが発生しました。多くの試行の後、私は解決策を見つけることができました。

@ essemoon によって予測されるように、最初に@firebase/firestoreangular.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

これで、アプリを実行できます。これでうまくいきました。それがあなたのためになることを願っています。

0
KevinKimaru

これはAngularFirestoreModuleの問題です。 package.jsonの以下の行を更新しましたが、正常に動作しています。私はangularバージョン8を使用しています。

「bundleDependencies all」から「bundleDependencies none」

"build:client-and-server-bundles": "ng build --prod && ng run web:server:production --bundleDependencies none"
0
Ajay Nikam