You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下React Native的App.js出现webpack模块找不到错误求助

嘿,我来帮你搞定这两个问题——先解决模块找不到的错误,再给你Ubuntu环境下React Native端到端测试的可行方案!

问题1:修复「模块找不到」的错误

你遇到的Cannot find module 'nadiaToteWeather/components/Weather.js'报错,核心原因是你用了项目名称作为前缀的绝对路径,但Webpack默认不会把你的项目根目录识别为Node模块的搜索路径。这里有两种解决方式:

方法1:用相对路径(最快见效)

假设你的项目结构是这样的:

nadiaToteWeather/
├── App.js
└── components/
    └── Weather.js

直接把App.js里的导入语句改成相对路径即可:

// 原代码
import Weather from "nadiaToteWeather/components/Weather.js";
// 修改后
import Weather from "./components/Weather.js";

./代表当前文件(App.js)所在的根目录,Webpack就能准确找到Weather.js文件了。

方法2:配置路径别名(适合大型项目)

如果你想保留类似nadiaToteWeather/components/xxx的写法,可以通过Babel插件配置路径别名:

  1. 安装依赖:
npm install --save-dev babel-plugin-module-resolver
  1. 在项目根目录创建或修改.babelrc文件,添加配置:
{
  "presets": ["babel-preset-expo"],
  "plugins": [
    [
      "module-resolver",
      {
        "root": ["./"],
        "alias": {
          "nadiaToteWeather": "./"
        }
      }
    ]
  ]
}

这样Webpack就会自动把nadiaToteWeather/xxx解析为项目根目录下的xxx文件。


问题2:Ubuntu上的React Native端到端测试方案

你说Detox仅支持Mac的iOS测试,确实如此——iOS测试依赖Xcode,而Xcode只能在Mac系统运行。不过我们可以分平台适配方案:

1. Android端测试:直接用Detox(Ubuntu完全支持)

Detox对Android的支持是跨平台的,你可以在Ubuntu上直接配置测试:

  • 先确保已安装Android SDK和模拟器(通过Android Studio配置即可)
  • 修改package.json里的detox配置,添加Android测试项:
"detox": {
  "test-runner": "mocha",
  "configurations": {
    "android.emu.debug": {
      "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
      "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug",
      "type": "android.emulator",
      "device": {
        "avdName": "Pixel_3a_API_30" // 替换成你创建的模拟器名称
      }
    },
    // 保留原iOS配置(仅在Mac环境可用)
    "ios.sim.debug": {
      "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/example.app",
      "build": "xcodebuild -project ios/example.xcodeproj -scheme example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
      "type": "ios.simulator",
      "device": {
        "type": "iPhone 11 Pro"
      }
    }
  }
}
  • 运行Android测试:
detox test -c android.emu.debug

2. iOS端测试:借助云服务(Ubuntu可行)

因为Ubuntu无法运行Xcode,所以需要用云平台完成iOS测试:

  • 云测试平台:比如BrowserStack、Sauce Labs,它们提供云端iOS模拟器/真机,你可以用Appium编写测试用例,上传导出的iOS原生项目后运行测试。
  • 云端Mac服务器:比如MacStadium,租用云端Mac机器,通过远程桌面连接后,在上面运行Detox的iOS测试。
  • Expo官方服务(EAS):Expo的EAS Build和EAS Test支持云端构建iOS应用并运行测试,你在Ubuntu上提交请求即可,无需本地Mac环境(需要订阅EAS服务)。

3. 跨平台折中方案:用Cypress测试Web端

你可以先通过expo start --web把React Native应用跑在Web上,用Cypress编写端到端测试覆盖核心业务逻辑。虽然这不是原生iOS测试,但能在Ubuntu上完成大部分功能验证,再结合云平台补充iOS原生测试即可。

内容的提问来源于stack exchange,提问作者newtojs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:32:44