错误:ENOENT:没有此类文件或目录,请打开“ google / protobuf / api.proto”

时间:2020-04-15 09:46:23

标签: angular firebase webpack angularfire server-side-rendering

我想将angular Universal集成到我的项目中,并使用AngularFire库。但是,当我通过运行npm在本地测试我的应用程序时,运行build && npm运行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'

3 个答案:

答案 0 :(得分:9)

我从另一篇文章中得到了这个信息,但是它确实帮助我解决了该错误(我已经在寻找修复了一段时间了。)

希望它对您有用

angular.json

"server": {
  "builder": "@angular-devkit/build-angular:server",
    "options": {
      "outputPath": "dist/TeacherKellyUKA/server",
      "main": "server.ts",
      "tsConfig": "tsconfig.server.json",
      "externalDependencies": ["@firebase/firestore"]
  },

答案 1 :(得分:0)

这是AngularFirestoreModule的问题。我已经更新了package.json中的行,并且工作正常。我正在使用角度版本8。

“ bundleDependencies全部”到“ bundleDependencies全部”

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

答案 2 :(得分:0)

@essemoon0提供的应用解决方案已修复该错误。运行firebase serve效果很好。但是,运行firebase deploy带来了另一个问题cannot find module @firebase/firestore。经过多次试验,我找到了解决方案。

根据@essemoon0的预测,首先按如下所示将@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/firestorefirebase/app软件包。

cd functions

npm i @firebase/app @firebase/firestore

现在您可以运行您的应用了。 这对我有用。希望对您有帮助。