如何修复来自 Appium 的错误“无法从 sw_vers 输出检测 Mac OS X 版本:'10.12'”

Posted

技术标签:

【中文标题】如何修复来自 Appium 的错误“无法从 sw_vers 输出检测 Mac OS X 版本:\'10.12\'”【英文标题】:How to fix error "Could not detect Mac OS X Version from sw_vers output: '10.12 '" from Appium如何修复来自 Appium 的错误“无法从 sw_vers 输出检测 Mac OS X 版本:'10.12'” 【发布时间】:2017-02-28 23:59:17 【问题描述】:

我安装了 appium-1.5.3.dmg 但是当我点击听诊器按钮时,Appium 显示错误:

 ✔ Xcode is installed at: /Library/Developer/CommandLineTools
[Error: Could not detect Mac OS X Version from sw_vers output: '10.12
']

谢谢!

【问题讨论】:

【参考方案1】:

它对我有用。

你可以通过这个命令配置文件:

grep -rl "无法从 sw_vers 输出中检测到 Mac OS X 版本:" /Applications/Appium.app/

终端将显示: /Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/build/lib/system.js /Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/lib/system.js /Applications/Appium.app//Contents/Resources/node_modules/appium-support/build/lib/system.js /Applications/Appium.app//Contents/Resources/node_modules/appium-support/lib/system.js

使用命令 vim 并配置每个文件。

示例

vim /Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/build/lib/system.js

配置文件:

    更改自 ->

    case 10: _arr = ['10.8', '10.9', '10.10', '10.11']; _i = 0;

    到->

    case 10: _arr = ['10.8', '10.9', '10.10', '10.11','10.12']; _i = 0;


vim /Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/lib/system.js

配置文件:

    更改自 ->

    try stdout = (await exec('sw_vers', ['-productVersion'])).stdout;

    到 ->

    try stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();

    更改自 ->

    for (let v of ['10.8', '10.9', '10.10', '10.11']) if (stdout.indexOf(v) === 0) return v;

    到->

    for (let v of ['10.8', '10.9', '10.10', '10.11','10.12']) if (stdout.indexOf(v) === 0) return v;


vim /Applications/Appium.app//Contents/Resources/node_modules/appium-support/build/lib/system.js

配置文件:

    更改自 ->

    case 10: _arr = ['10.8', '10.9', '10.10', '10.11']; _i = 0;

    到->

    case 10: _arr = ['10.8', '10.9', '10.10', '10.11','10.12']; _i = 0;


vim /Applications/Appium.app//Contents/Resources/node_modules/appium-support/lib/system.js

配置文件:

    更改自 ->

    try stdout = (await exec('sw_vers', ['-productVersion'])).stdout;

    到->

    try stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();

    更改自 ->

    for (let v of ['10.8', '10.9', '10.10', '10.11']) if (stdout.indexOf(v) === 0) return v;

    到->

    for (let v of ['10.8', '10.9', '10.10', '10.11','10.12']) if (stdout.indexOf(v) === 0) return v;

点击启动听诊器按钮

【讨论】:

太棒了!这是一个很大的帮助。节省了我的时间。 我从来没有想过。很好的答案。 我遵循了这个例子,但是当我运行“appium-doctor”时出现了同样的错误信息。我安装了 macOS High Sierra (10.3),所以我使用了相同的方法。有什么想法吗? 谁能帮我修改配置文件? 要使用 vim 和编辑配置文件,请点击此链接:***.com/a/5764079/3659227【参考方案2】:

尽管我看到 appium 已经是fixed,但我还是完成了上述步骤。

只要运行:

npm install appium-doctor -g

更新 appium-doctor 本身,然后运行:

appium-doctor

再次看到它的工作。

修复前后:

【讨论】:

以上是关于如何修复来自 Appium 的错误“无法从 sw_vers 输出检测 Mac OS X 版本:'10.12'”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复来自 Apollo 客户端的格式错误的身份验证标头错误

Azure Pipeline 中的简单 Appium 测试 - 如何修复失败的构建步骤 (vstest)?

如何修复来自 Google Ads API 的无效 JSON 负载错误

如何修复“找不到文件'.../node_modules/dotenv/types'。”来自 jsconfig.json 的错误?

如何修复导入错误:来自“react-native-web”的“requireNativeComponent”

如何修复 Typescript 编译错误 ts2345“类型 'Response' 丢失......来自'Response'类型:重定向、预告片、formData!”