该包本身指定了一个无法解析的“main”模块字段

aza*_*chi 5 javascript react-native axios metro-bundler

尝试运行一个以x-resources包作为依赖项的反应本机项目,使用纱线安装了依赖项,但是当我尝试运行该项目时,我在运行时收到此错误

bundling failed: Error: While trying to resolve module `x-resources` from file `/***/index.js`, the package `/***/node_modules/x-resources/package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`/***/node_modules/x-resources/dist/index.js`. Indeed, none of these files exist:

 *  /***/node_modules/x-resources/dist/index.js(.native|.ios.js|.native.js|.js|.ios.json|.native.json|.json|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx)
 * /***/node_modules/x-resources/dist/index.js/index(.native|.ios.js|.native.js|.js|.ios.json|.native.json|.json|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx)

    at ResolutionRequest.resolveDependency (/***/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:65:15)
    at DependencyGraph.resolveDependency (/***/node_modules/metro/src/node-haste/DependencyGraph.js:282:16)
    at Object.resolve (/***/node_modules/metro/src/lib/transformHelpers.js:267:42)
    at /***/node_modules/metro/src/DeltaBundler/traverseDependencies.js:426:31
    at Array.map (<anonymous>)
    at resolveDependencies (/***/node_modules/metro/src/DeltaBundler/traverseDependencies.js:423:18)
    at /***/node_modules/metro/src/DeltaBundler/traverseDependencies.js:275:33
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (/***/node_modules/metro/src/DeltaBundler/traverseDependencies.js:87:24)
    at _next (/***/node_modules/metro/src/DeltaBundler/traverseDependencies.js:107:9)
Run Code Online (Sandbox Code Playgroud)

这个包中没有/dist文件夹,我不明白为什么它在里面寻找index.js,我不知道这是一个与地铁相关的问题还是特定于这个包的,我尝试关闭正在运行的js服务器多次但没有运气。

  • 反应:16.9.0

  • 反应本机:0.61.4

  • x 资源:1.1.2

  • axios:0.19.0

Fra*_*son 1

这可能是由于node_modules&不匹配造成的Pods。我在更新纱线工作区项目中的 deps 时看到了类似的错误,我通过清除我的依赖项、所有依赖项(包括子包内的依赖项)解决了这个问题。

rm -rf yarn.lock ./node_modules ./ios/Pods ./ios/Podfile.lock
rm -rf ./**/node_modules/ ./**/iods/Pods ./**/ios/Podfile.lock
Run Code Online (Sandbox Code Playgroud)

删除锁定文件并不是严格要求的,因为我们只是想确保 node_modules 处于原始状态。