【Appium踩坑】iOS WebDriverAgent 执行./Scripts/bootstrap.sh报错

本文介绍了解决Appium XCUITest WebDriverAgent在编译过程中遇到的错误的方法。通过修改webpack.config.js文件,去除对node_modules的排除,解决了因解析失败导致的编译错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考testerhome解决思路

1、解决方法:

webpack.config.js 文件里去掉 exclude: /node_modules/(忽略node_modules)

文件路径:
/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/webpack.config.js
修改前:
loaders: [
      { test: /\.js?$/, loaders: ['babel-loader'], exclude: /node_modules/ },
      { test: /\.css?$/, loader: 'style-loader!css-loader' },
    ]
修改后:
loaders: [
      { test: /\.js?$/, loaders: ['babel-loader'] },
      { test: /\.css?$/, loader: 'style-loader!css-loader' },
    ]
重新执行 ./Scripts/bootstrap.sh

执行成功✅

➜  /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
> ./Scripts/bootstrap.sh
Fetching dependencies
Building Inspector
Creating bundle directory...
Fetching Inspector dependencies...
npm WARN ajv-errors@1.0.1 requires a peer of ajv@>=5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN react-dom@15.6.2 requires a peer of react@^15.6.2 but none is installed. You must install peer dependencies yourself.
npm WARN webpack-dev-middleware@3.7.2 requires a peer of webpack@^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN webpack-dev-server@3.11.0 requires a peer of webpack@^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN web-driver-inspector@1.0.0 No repository field.

up to date in 6.143s

21 packages are looking for funding
  run `npm fund` for details

Validating Inspector
Building Inspector...

> web-driver-inspector@1.0.0 build /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector
> webpack --progress --colors

Hash: d60a00ea8d8ed0e533b4
Version: webpack 1.15.0
Time: 5950ms
       Asset    Size  Chunks             Chunk Names
inspector.js  879 kB       0  [emitted]  main
   [0] multi main 28 bytes {0} [built]
    + 229 hidden modules
Done
详细报错信息:
ERROR in ./js/app.js
Module parse failed: /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/js/app.js Unexpected token (67:6)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (67:6)
    at Parser.pp$4.raise (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:2221:15)
    at Parser.pp.unexpected (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:603:10)
    at Parser.pp$3.parseExprAtom (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1822:12)
    at Parser.pp$3.parseExprSubscripts (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1715:21)
    at Parser.pp$3.parseMaybeUnary (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1692:19)
    at Parser.pp$3.parseExprOps (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1637:21)
    at Parser.pp$3.parseMaybeConditional (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1620:21)
    at Parser.pp$3.parseMaybeAssign (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1597:21)
    at Parser.pp$3.parseParenAndDistinguishExpression (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1861:32)
    at Parser.pp$3.parseExprAtom (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1796:19)
    at Parser.pp$3.parseExprSubscripts (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1715:21)
    at Parser.pp$3.parseMaybeUnary (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1692:19)
    at Parser.pp$3.parseExprOps (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1637:21)
    at Parser.pp$3.parseMaybeConditional (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1620:21)
    at Parser.pp$3.parseMaybeAssign (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1597:21)
    at Parser.pp$3.parseExpression (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1573:21)
    at Parser.pp$1.parseReturnStatement (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:839:33)
    at Parser.pp$1.parseStatement (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:699:34)
    at Parser.pp$1.parseBlock (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:981:25)
    at Parser.pp$3.parseFunctionBody (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:2105:24)
    at Parser.pp$3.parseMethod (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:2075:10)
    at Parser.pp$1.parseClassMethod (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1137:25)
    at Parser.pp$1.parseClass (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:1118:14)
    at Parser.pp$1.parseStatement (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:697:19)
    at Parser.pp$1.parseTopLevel (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:638:25)
    at Parser.parse (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:516:17)
    at Object.parse (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/node_modules/acorn/dist/acorn.js:3098:39)
    at Parser.parse (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/lib/Parser.js:902:15)
    at NormalModule.<anonymous> (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack/lib/NormalModule.js:104:16)
    at NormalModule.onModuleBuild (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/node_modules/webpack-core/lib/NormalModuleMixin.js:310:10)
 @ multi main
<think>嗯,用户现在遇到了另一个错误,当尝试进入`node_modules/appium-webdriveragent`目录时提示目录不存在。之前的问题是关于`/usr/local/bin/appium`找不到,现在这个看起来是项目本地的依赖问题。首先,我需要确认用户是在正确的目录下执行这个命令。可能用户是在项目根目录下没有安装`appium-webdriveragent`,或者安装过程中出现了问题。 首先,我应该检查用户是否已经正确安装了Appium和相关依赖。`appium-webdriveragent`通常是作为Appium的一部分安装的,但如果是作为独立模块安装的话,可能需要单独安装。用户可能没有正确运行`npm install`,或者安装时出现了错误,导致依赖没有正确下载。 接下来,用户执行`cd node_modules/appium-webdriveragent`时提示目录不存在,这说明在`node_modules`下确实没有这个包。可能的原因包括:项目未正确安装依赖、依赖名称变更、或者路径错误。例如,可能用户的项目中没有包含`appium-webdriveragent`作为依赖项,或者安装时网络问题导致下载失败。 另外,用户可能在全局安装的Appium中寻找这个模块,而实际上它应该是在项目的本地`node_modules`中。需要确认用户是否在正确的项目目录下,并且是否运行了`npm install`来安装所有依赖。此外,Appium 2.0之后可能有模块结构的变化,可能需要额外的驱动安装,比如执行`appium driver install xcuitest`来安装iOS驱动,这可能涉及到`appium-webdriveragent`的安装。 用户提供的终端输出显示在进入`node_modules`目录后提示符变成`tokyo@192 node_modules %`,这可能意味着用户已经进入了`node_modules`目录,但里面没有`appium-webdriveragent`子目录。这时候需要检查`package.json`中是否包含`appium-webdriveragent`作为依赖,或者是否应该通过其他方式安装这个包。 还有可能用户混淆了全局安装和本地安装的区别。如果Appium是全局安装的,那么`appium-webdriveragent`可能不在项目的`node_modules`中,而是在全局的`node_modules`目录下。这时候需要指导用户检查全局安装路径,或者建议他们在本地项目中重新安装相关依赖。 最后,可能需要提醒用户关于权限问题,确保安装依赖时有足够的权限,或者建议清理`node_modules`和`package-lock.json`后重新安装,以解决可能的缓存或损坏问题。</think>### 分步骤解决方案: #### 一、错误原因分析 执行 `cd node_modules/appium-webdriveragent` 报错 `No such file or directory`,说明以下可能性: 1. **项目未安装 `appium-webdriveragent` 依赖** 2. 依赖安装路径错误 3. 依赖名称或版本变更(如 Appium 2.x 后部分模块分离) --- #### 二、验证依赖安装状态 1. **检查 `package.json` 文件**: ```bash cat package.json | grep "appium-webdriveragent" ``` - 若未找到相关依赖 → **未声明依赖** - 若存在但版本不匹配 → **需更新依赖** 2. **检查本地 `node_modules` 目录**: ```bash ls node_modules/appium* # 查看所有以 "appium" 开头的依赖 ``` - 若缺少 `appium-webdriveragent` → **依赖未安装** --- #### 三、修复步骤 1. **安装 `appium-webdriveragent`**(根据项目类型选择): - **作为项目依赖安装**(推荐): ```bash npm install appium-webdriveragent --save-dev ``` - **全局安装**(需谨慎): ```bash npm install -g appium-webdriveragent ``` 2. **Appium 2.x 用户特殊处理**: - 安装 `xcuitest` 驱动(包含 WebDriverAgent): ```bash appium driver install xcuitest ``` - 检查驱动是否激活: ```bash appium driver list --installed ``` 3. **手动下载源码(备用方案)**: ```bash git clone https://github.com/appium/appium-webdriveragent.git mv appium-webdriveragent node_modules/ # 移动到正确目录 ``` --- #### 四、路径与权限验证 1. **确认当前目录结构**: ```bash pwd # 应显示项目根目录(包含 package.json) ``` 2. **修复权限问题**(常见于 macOS/Linux): ```bash sudo chown -R $(whoami) node_modules # 递归修改所有权 ``` --- #### 五、安装后操作 1. **重建 iOS 依赖**(针对真机/模拟器测试): ```bash cd node_modules/appium-webdriveragent ./Scripts/bootstrap.sh # 安装 Carthage 依赖 ``` 2. **检查 WebDriverAgent 工程**: ```bash open node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj # 验证 Xcode 工程完整性 ``` --- #### 六、常见问题对照表 | 现象 | 原因 | 解决方案 | |------|------|----------| | `npm install` 后仍缺少依赖 | `node_modules` 缓存污染 | 删除 `node_modules` 和 `package-lock.json` 后重装 | | Xcode 编译 WebDriverAgent 失败 | Carthage 依赖缺失 | 执行 `brew install carthage` 并重新 `bootstrap.sh` | | 真机设备无法识别 | 未配置开发者证书 | 在 Xcode 中修改 `WebDriverAgent` 的 Bundle ID 和签名设置 | --- #### 七、补充说明 - **Appium 版本兼容性**: - Appium 1.x:`appium-webdriveragent` 通常自动集成 - Appium 2.x:需单独安装驱动(如 `xcuitest`) - **iOS 真机测试要求**: - 苹果开发者账号 - Xcode 中配置有效的签名证书 - 设备 UDID 已添加到开发者账户
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值