【问题标题】:react-native Unable to resolve module 'warnOnce'react-native 无法解析模块'warnOnce'
【发布时间】:2020-03-02 02:43:43
【问题描述】:

我的英语有点生疏,对此我很抱歉。

当我在 iOS 模拟器上启动 react-native 项目时出现错误。

为了排除与我的代码的任何冲突,我开始了一个新项目

react-native init demo

react-native start 

react-native run-ios --simulator="iPhone 6"

现在是我收到消息错误的时候

Loading dependency graph, done.
error: bundling failed: Error: Unable to resolve module `warnOnce` from `node_modules/react-native/Libraries/react-native/react-native-implementation.js`: warnOnce could not be found within the project.

If you are sure the module exists, try these steps:
 1. Clear watchman watches: watchman watch-del-all
 2. Delete node_modules: rm -rf node_modules and run yarn install
 3. Reset Metro's cache: yarn start --reset-cache
 4. Remove the cache: rm -rf /tmp/metro-*
    at ModuleResolver.resolveDependency (/usr/local/lib/node_modules/react-native/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:186:15)
    at ResolutionRequest.resolveDependency (/usr/local/lib/node_modules/react-native/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:52:18)
    at DependencyGraph.resolveDependency (/usr/local/lib/node_modules/react-native/node_modules/metro/src/node-haste/DependencyGraph.js:282:16)
    at Object.resolve (/usr/local/lib/node_modules/react-native/node_modules/metro/src/lib/transformHelpers.js:267:42)
    at /usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/traverseDependencies.js:426:31
    at Array.map (<anonymous>)
    at resolveDependencies (/usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/traverseDependencies.js:423:18)
    at /usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/traverseDependencies.js:275:33
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (/usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/traverseDependencies.js:87:24)

我想知道是否有人有同样的问题以及如何解决?

我的 react-native 版本是 0.61.5

package.json

{
  "name": "demo",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "react": "16.9.0",
    "react-native": "0.61.4"
  },
  "devDependencies": {
    "@babel/core": "^7.6.2",
    "@babel/runtime": "^7.6.2",
    "@react-native-community/eslint-config": "^0.0.5",
    "babel-jest": "^24.9.0",
    "eslint": "^6.5.1",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.56.0",
    "react-test-renderer": "16.9.0"
  },
  "jest": {
    "preset": "react-native"
  }
}

感谢您的提前。

【问题讨论】:

  • 你尝试在 run-ios 之前运行 yarn install 或 npm install 吗?
  • 你能添加你的 package.json 文件吗?
  • @EduardoSchork 我试了很多次,rm -rf node_modules && nom install
  • @Cool7 我编辑我的帖子添加 package.json
  • 所以,不妨试试这个github.com/facebook/react-native/issues/…

标签: ios react-native


【解决方案1】:

我找到了解决办法。

我使用的是 react-native-cli。

上一个 react-native 文档中的建议报告,告知 react-native-cli 可能会导致意外问题。

我删除了 react-native-cli,现在我正在使用

npx react-native ...

谢谢你,我为我糟糕的英语感到抱歉。

【讨论】:

  • 你是如何删除 react-native-cli 的?
【解决方案2】:

尝试将您的metro.config.js 编辑为

const blacklist = require('metro-config/src/defaults/blacklist');

module.exports = {
  resolver: {
    blacklistRE: blacklist([
      /node_modules\/.*\/node_modules\/react-native\/.*/,
    ])
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
};

请参考thread and answer

【讨论】:

  • 感谢您的回答。这个解决方案对我来说不是固定的。还在发生,
  • 是的。我之前执行过 - watchman watch-del-all && rm -rf /tmp/metro-* && react-native start --reset-cache 。
  • 我找到了解决方案。不必安装 react-native-cli。很抱歉浪费了你的时间。我如何在这篇文章中展示解决方案?
猜你喜欢
  • 1970-01-01
  • 2017-10-11
  • 2016-03-23
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
  • 2020-04-15
  • 2016-12-27
  • 1970-01-01
相关资源
最近更新 更多