@parcel/core: 无法从 './node_modules/@firebase/firestore/dist/index.esm2017.js' 解析 'process'

@parcel/core: Failed to resolve 'process' from './node_modules/@firebase/firestore/dist/index.esm2017.js'

我正在做一个项目,当我尝试 运行 parcel dev 或 build 命令时,它输出以下错误:

    × Build failed.
    @parcel/core: Failed to resolve 'process' from './node_modules/@firebase/firestore/dist/index.esm2017.js'
    
      D:\Workspace\Front-End\Apps\RISC-Aswan\node_modules\@firebase\firestore\dist\index.esm2017.js:5741:38
        5740 |         return t.store(e);
      > 5741 |     }
      >      |      ^
        5742 |     // visible for testing
        5743 |     /** Parse User Agent to determine iOS version. Returns -1 if not found. */

之前是可以的,现在不知道是什么问题。我尝试删除 node__modules 文件夹和 运行 npm install 但没有任何变化。

我在脚本文件中有以下导入:

import { initializeApp } from 'firebase/app';
import { getFirestore, collection, addDoc } from 'firebase/firestore';

导入 firestore 的第二行是导致问题的原因,评论它会导致一切正常。

这是一张带有终端消息和 esm2017.js 文件的照片

我的 package.json 亲属:

    "devDependencies": {
        "autoprefixer": "^10.4.2",
        "parcel": "^2.2.1",
        "postcss": "^8.4.6",
        "tailwindcss": "^3.0.18"
    },
    "dependencies": {
        "firebase": "^9.6.6",
        "vanilla-hamburger": "^0.2.3"
    }

在您的 package.json 中,您将 parcel 定义为更高版本 compatible with 2.2.1:

    "devDependencies": {
        "autoprefixer": "^10.4.2",
        "parcel": "^2.2.1"
     // Rest of packages

目前有一个 issue in the GitHub repository for parcel regarding this problem with Firebase. While that issue shows your exact error message, the general issue to keep track of is this open issue,因为此问题会影响 Firebase 以外的库。您可以做的是避免使用受影响的 parcel 版本(据我所知是 2.3.1),或者跟踪问题以在发布时更新到固定版本。

编辑(2021 年 2 月 23 日):

似乎这两个 GitHub 问题现在都随着 Parcel 2.3.2 的发布而关闭。我测试了使用版本 2.3.1 使用 Parcel 和 Firebase 构建 React 项目,我遇到了与您完全相同的错误。更新到 2.3.2 在我这边完全解决了这个问题,没有任何其他依赖关系的变化。以防万一以后有人遇到这个话题。

出于某种原因将别名修改为以下在开发和构建中有效

"alias": {
    "process": {
        "global": "{}"
    }
}

这是我在本文 issue

中提到的另一个建议的解决方法
  • 在我的 package.json 文件中使用了别名
     "alias": {
            "process": "false"
        }
  • 手动安装进程包
    "dependencies": {
        "process": "^0.11.10",
    },
  • 将节点更新为 v16.14.0 而不是 v16.13.1

  • 使用了 parcel build ./src/index.html 并删除了 package.json

    中的 "source": "./src/index.html"