我正在尝试将最新版本的 log4js(技术上是 log4js-node,但似乎 log4js 现在用于后者)集成到 React Native 项目中。我使用 Yarn 1.0.2 安装了这个包,并写了几行代码来测试配置记录器和查看一些日志的概念。当我尝试启动 React Native 打包器并在我的模拟器中打开应用程序时,出现以下异常:
error: bundling failed: Error: Unable to resolve module 'fs' from 'C:\path_to_project\node_modules\log4js\lib\log4js.js': Module 'fs' does not exist in the Haste module map
我查看了上面的文件,注意到有一个变量依赖于 fs 包。我安装了fs包并再次尝试,但收到此错误:
error: bundling failed: Error: While trying to resolve module 'fs' from file 'C:\path_to_project\node_modules\log4js\lib\log4js.js', the package 'C:\path_to_project\node_modules\fs\package.json' was successfully found. However, this package itself specifies a 'main' module field that could not be resolved ('C:\path_to_project\node_modules\fs\index'). Indeed, none of these files exist:
* ‘C:\path_to_project\node_modules\fs\index.js(.native||.android.js|.native.js|.js|.android.json|.native.json|.json)’
* ‘C:\path_to_project\node_modules\fs\index.js\index(.native||.android.js|.native.js|.js|.android.json|.native.json|.json)’
at ResolutionRequest.resolveDependency (C:\path_to_project\node_modules\metro\src\node-haste\DependencyGraph\ResolutionRequest.js:103:15)
at DependencyGraph.resolveDependency (C:\path_to_project\node_modules\metro\src\node-haste\DependencyGraph.js:272:4579)
at dependencies.map.relativePath (C:\path_to_project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:376:19)
at Array.map (native)
at resolveDependencies (C:\path_to_project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:374:16)
at C:\path_to_project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:212:33
at Generator.next (<anonymous>)
at step (C:\path_to_project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:297:313)
at C:\path_to_project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:297:473
我知道 fs 包当前未使用,但如果是这种情况,如何使用 log4js 包?它似乎定期更新,查看它的 Github 存储库。
我注意到,当我安装 fs 时,我在我的node_modules
文件夹中获得了 graceful-fs 包。(但在package.json
我看到 fs 包,而不是优雅的 fs)
除了上述操作之外,我还尝试清理 Gradle,显式安装优雅 fs 并安装 react-native-fs,但所有这些都没有任何区别。