【问题标题】:Cannot read properties of undefined (reading 'transformFile') at Bundler.transformFile无法在 Bundler.transformFile 读取未定义的属性(读取“transformFile”)
【发布时间】:2021-12-07 08:30:01
【问题描述】:

我今天更新了node,但我收到了这个错误:

error: TypeError: Cannot read properties of undefined (reading 'transformFile')
    at Bundler.transformFile (/Users/.../node_modules/metro/src/Bundler.js:48:30)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Object.transform (/Users/.../node_modules/metro/src/lib/transformHelpers.js:101:12)
    at async processModule (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:137:18)
    at async traverseDependenciesForSingleFile (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:131:3)
    at async Promise.all (index 0)
    at async initialTraverseDependencies (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:114:3)
    at async DeltaCalculator._getChangedDependencies (/Users/.../node_modules/metro/src/DeltaBundler/DeltaCalculator.js:164:25)
    at async DeltaCalculator.getDelta (/Users/.../node_modules/metro/src/DeltaBundler/DeltaCalculator.js:94:16)

除此之外,我没有做任何不寻常的事情,所以我不确定要分享什么。如果我缺少任何信息,请发表评论,我会添加它。

在构建终端时也会抛出这个错误:

Failed to construct transformer:  Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at stableHash (/Users/.../node_modules/metro-cache/src/stableHash.js:19:8)
    at Object.getCacheKey (/Users/.../node_modules/metro-transform-worker/src/index.js:593:7)
    at getTransformCacheKey (/Users/.../node_modules/metro/src/DeltaBundler/getTransformCacheKey.js:24:19)
    at new Transformer (/Users/.../node_modules/metro/src/DeltaBundler/Transformer.js:48:9)
    at /Users/.../node_modules/metro/src/Bundler.js:22:29
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

我的节点、npx 和 react-native 版本是:

  • 节点:17.0.0
  • npx:8.1.0
  • react-native-cli: 2.0.1

【问题讨论】:

    标签: node.js react-native npm npm-install react-native-cli


    【解决方案1】:

    在 Node.js 17.0.0 中遇到了同样的问题。为了解决这个问题,我降级到14.18.1版本,删除node_modules并重新安装。

    【讨论】:

    • 在尝试找到问题 3 天后,这完成了工作。我重新安装了节点 LTS 14.8.1,它解决了问题。谢谢
    • ? 成功了!只需提醒您必须删除 node_modules 并使用 npm/yarn install 再次安装
    • 14.8.1 是最高的吗?回到 3 个版本似乎是一大步……
    • 我还没有测试过,但根据线程版本中的其他人的说法,16.13.0 是可以正常工作的最新版本
    【解决方案2】:

    可以通过降级节点js来解决

    > nvm list // to see all available node version
    
    > nvm install 16.13.0 // to install the version I wanted 
    
    > nvm use 16.13.0  // use the installed version 
    OR
    > nvm alias default 16 // use the installed version as DEFAULT 
    

    【讨论】:

    • 我做了上述步骤,一切都很好。但是当我尝试构建时,它又失败了。如果我关闭终端,然后再次检查节点版本,它会显示 17?!
    • @FotiosTsakiris 如果您希望您的节点版本保持不变,您可以使用nvm alias default 16.13.0,这样您的节点版本始终保持在版本 16。
    • 非常感谢您的评论。实际上,我尝试了其他方法并且成功了。在我设置nvm use 16.13.0 之后,我做了nvm uninstall 17.3.1,然后项目确实构建了。
    【解决方案3】:

    快速而肮脏的解决方法(对我有用):

    添加或更新您的 package.json 引擎部分,以停止尝试使用 Node 17.0.x Current 进行构建,直到您在 tls 模块中解决新的 OpenSSL PKCS8 格式:

      "engines": {
        "node": "<17",
        "npm": "<8.2"
      },
    

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。似乎问题是由于 Node.js 的 17.x 版本造成的。我解决了降级到 Node.js 16.12.0 的问题。

      【讨论】:

      • Node.js 16.13.0 是运行良好的最新版本
      【解决方案5】:

      有同样的问题。从 17.3.0 降级到 16.13.1 版本,效果很好。

      【讨论】:

      【解决方案6】:

      首先使用nvm list 检查您的节点版本 使用nvm uninstall version卸载不需要的节点版本,用正在使用的版本号更改版本。 使用nvm install version_number 安装新版本的节点 使用 nvm use version_number 使用已安装的节点版本。将 version_number 替换为您已安装的节点版本。

      【讨论】:

      • 我们不知道这个人是否在使用 nvm,因为我在 OP 中没有提到它。
      【解决方案7】:

      如果您执行@uzai sindiko 的步骤,但当您尝试构建时,它再次失败。如果你关闭终端,然后再次检查节点版本,它会显示 17.3.1。

      然后在您设置nvm use 16.13.0 之后,还要执行nvm uninstall 17.3.1,然后您的项目将被构建。

      谢谢

      【讨论】:

        【解决方案8】:

        我尝试了不同的节点版本...同样的错误。卸载并尝试了新版本的 Android Studio ......同样的错误。从头开始全新的项目......同样的错误。删除 node_modules 并运行 npm i...同样的错误。

        这对我有用。

        运行

        npx react-native info

        在该读数的顶部,它应该说明您正在使用的 Node 版本。 (它告诉我我在一个流浪的 node_modules 文件夹中使用 Node: 17.xx.x。)

        我的修复只是重命名该文件夹(以防删除它会破坏另一个项目)。现在,当我运行npx react-native info 时,它会告诉我正确的节点版本(16.13.1),并且我的所有项目都再次在模拟器中运行!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-02
          • 2020-03-26
          • 2021-12-26
          • 2023-03-11
          • 2022-01-15
          • 2021-12-31
          • 2021-12-13
          • 2021-11-28
          相关资源
          最近更新 更多