无法读取 Bundler.transformFile 处未定义的属性(读取“transformFile”)

Cha*_*lha 80 node.js npm react-native npm-install react-native-cli

我今天更新了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)
Run Code Online (Sandbox Code Playgroud)

除此之外我没有做过任何不寻常的事情,所以我不知道该分享什么。如果我遗漏了任何信息,请评论,我会添加它。

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

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'
}
Run Code Online (Sandbox Code Playgroud)

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

  • 节点:17.0.0
  • NPX:8.1.0
  • 反应本机-cli:2.0.1

小智 99

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

  • 有效!请记住,您必须删除 node_modules 并使用 npm/yarn install 重新安装它 (4认同)
  • 14.8.1 是它适用的最高版本吗?回到 3 个版本似乎是一个很大的倒退...... (3认同)
  • 经过 3 天的尝试找到问题,这完成了工作。我重新安装了节点LTS 14.8.1,问题解决了。谢谢 (2认同)
  • `nvm install 14.18.1`,即使在 M1 Mac 上,这也需要足够长的时间才能休息一下,因此请考虑在运行该命令后休息一下。 (2认同)

uza*_*iko 43

可以通过降级node 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 
Run Code Online (Sandbox Code Playgroud)


Aru*_*r S 14

跑步:

export NODE_OPTIONS=--openssl-legacy-provider
Run Code Online (Sandbox Code Playgroud)

建立与 openssl 的连接


小智 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),并且我的所有项目都再次在模拟器中运行!


Eng*_*faq 5

此问题是由于您当前使用的节点版本(例如节点版本 19)与项目使用的节点版本之间的差异造成的。

要解决此问题,您需要根据项目使用的节点版本和您当前的节点版本进行降级或升级。

你必须先安装节点,然后再安装nvm (NODE VERSION MANAGER)。nvm 是一个节点版本管理器,您可以使用它安装多个节点版本

当前的 长期运输服务 老马厩 老不稳定
19.2.0 18.12.1 18年12月0日 16.0.11
19.1.0 18.12.0 17.0.12 15.0.11
19.0.1 16.18.1 16年12月0日 14.0.11
19.0.0 16.18.0 15年12月0日 13.0.11
18.11.0 16.17.1 14.0.12 12.0.11
18.10.0 16.17.0 13.0.12 11.0.11
18.9.1 16.16.0 12.0.12 10.0.11
18.9.0 16.15.1 11.0.12 0.11.9
18.8.0 16.15.0 10.0.12 0.11.8
18.7.0 16.14.2 0.12.9 0.11.7
18.6.0 16.14.1 0.12.8 0.11.6
18.5.0 16.14.0 0.12.7 0.11.5
18.4.0 16.13.2 0.12.6 0.11.4
18.3.0 16.13.1 0.12.5 0.11.3
18.2.0 16.13.0 0.12.4 0.11.2
18.1.0 14.21.1 0.12.3 0.11.1
18.0.0 14.21.0 0.12.2 0.11.0
17.9.1 14.20.1 0.12.1 0.9.12
17.9.0 14.20.0 0.12.0 0.9.11
17.8.0 14.19.3 48.10.0 0.9.10

要安装 nvm,请点击此链接

之后您可以使用以下 nvm 命令

nvm ls

// install specific version of node
nvm install 6.9.2

// set default version of node
nvm alias default 6.9.2

// switch version of node
nvm use 6.9.1
Run Code Online (Sandbox Code Playgroud)