ReactNative-Q&A:Error: error:0308010C:digital envelope routines::unsupported

跑 React Native 工程的时候提示:

Failed to construct transformer: Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:130:10)
at stableHash (/MyProject/node_modules/metro-cache/src/stableHash.js:19:8)
at JsTransformer.getCacheKey (/MyProject/node_modules/metro/src/JSTransformer/worker.js:471:7)
at getTransformCacheKey (/MyProject/node_modules/metro/src/DeltaBundler/Transformer/getTransformCacheKey.js:39:29)
at new Transformer (/MyProject/node_modules/metro/src/DeltaBundler/Transformer.js:147:28)
at /MyProject/node_modules/metro/src/Bundler.js:54: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’
}

问题原因:系统中更新了 OpenSSL3.0,在OpenSSL3.0中,对允许的加密算法和密钥的大小加了限制。

解决方法:

  • macOS Linux:
    export NODE_OPTIONS=--openssl-legacy-provider

  • Windows:
    set NODE_OPTIONS=--openssl-legacy-provider


问题现象:
提示:

error ~/Documents/Project/MyProject/node_modules/@lux/pkg-report: Command failed.
Exit code: 1
Command: node ./lib/index.js
Arguments:
Directory: ~/Documents/Project/MyProject/node_modules/@lux/pkg-report
Output:
~/Documents/Project/MyProject/node_modules/@lux/pkg-report/lib/utils/report.js:43
name: user.name,
^

TypeError: Cannot read properties of undefined (reading ‘name’)
at buildInfo (/Documents/Project/MyProject/node_modules/@lux/pkg-report/lib/utils/report.js:43:24)
at report (
/Documents/Project/MyProject/node_modules/@lux/pkg-report/lib/utils/report.js:57:21)
at prepareHandler (/Documents/Project/MyProject/node_modules/@lux/pkg-report/lib/index.js:29:25)
at Object. (
/Documents/Project/MyProject/node_modules/@lux/pkg-report/lib/index.js:31:1)
at Module._compile (node:internal/modules/cjs/loader:1198:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
at Module.load (node:internal/modules/cjs/loader:1076:32)

问题原因:@lux获取不到 user.name

解决方法:
必须要设置git的全局 user.name user.email


问题现象:js SyntaxError: Invalid character: '\0'
相关解释:
* https://forums.developer.apple.com/forums/thread/739234
* https://github.com/facebook/react-native/issues/41258


ReactNative-Q&A:Error: error:0308010C:digital envelope routines::unsupported
https://dnacore.github.io/post/da6ca9f9-dc70-4979-a94b-9b26084948c0.html
作者
DNACore
发布于
2023年8月3日
更新于
2024年10月16日
许可协议