【问题标题】:Error: ENOENT: no such file or directory, open 'google/protobuf/api.proto'错误:ENOENT:没有这样的文件或目录,打开 'google/protobuf/api.proto'
【发布时间】:2020-04-15 09:46:23
【问题描述】:

我想将 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'

【问题讨论】:

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


    【解决方案1】:

    我从另一个帖子中得到了这个,但它确实帮助我解决了这个错误(我一直在寻找修复方法一段时间)。

    希望对你有用

    angular.json

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

    【讨论】:

    • 关于这个问题的更多细节:github.com/angular/angularfire/issues/…
    • bravo...我一直在寻找解决方案 2 天...非常感谢...
    • 嗨@jessemoon0,添加externalDependencies 后,我收到此错误。架构验证失败并出现以下错误:数据路径“”不应具有其他属性(externalDependencies)。如何解决这个问题?
    【解决方案2】:

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

    “bundleDependencies all”到“bundleDependencies none”

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

    【讨论】:

      【解决方案3】:

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

      根据@essemoon0 的预测,首先在angular.json 中添加@firebase/firestore 作为外部依赖项,如下所示

      "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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-28
        • 1970-01-01
        • 2018-07-06
        • 1970-01-01
        • 2019-01-26
        • 2021-06-08
        • 2019-06-24
        • 2016-07-05
        相关资源
        最近更新 更多