Windows下执行cordova run android报错:'sh'命令未识别
问题解决:Cordova
sh 命令报错 + Vue.js 集成步骤 一、解决 apkanalyzer 调用时的 sh 命令不存在问题
方法1:添加Git Bash的sh到系统PATH
找到你的Git安装路径(默认是C:\Program Files\Git\bin),将该路径添加到系统环境变量PATH中,然后重启所有终端(PowerShell/Git Bash),再重新执行cordova run android。
方法2:指定Cordova使用的Shell
- 临时生效:在PowerShell中执行以下命令,再运行Cordova命令:
$env:CORDOVA_SHELL="C:\Program Files\Git\bin\sh.exe" - 永久生效:在系统环境变量中新增
CORDOVA_SHELL变量,值设为C:\Program Files\Git\bin\sh.exe,保存后重启终端。
方法3:临时禁用apkanalyzer(快速绕过)
如果只是想先跑通项目,可在项目根目录的config.xml中添加以下配置,让Cordova跳过APK分析步骤:
<preference name="AndroidApkAnalyzer" value="false" />
二、集成现有Vue.js项目到Cordova
迁移Vue构建产物
先备份Cordova项目根目录下的www文件夹,然后执行Vue项目的构建命令:npm run build将Vue项目
dist目录下的所有文件,复制到Cordova的www目录中,覆盖原有文件。调整Vue路由模式
打开Vue项目的路由配置文件(如src/router/index.js),将路由模式从history改为hash,避免本地文件协议下的页面刷新404问题:const router = new VueRouter({ mode: 'hash', // 替换原有的history模式 routes: [...] })适配Cordova设备就绪事件
在Vue的入口文件(如src/main.js)中,确保Vue实例在Cordova的deviceready事件触发后再初始化,避免设备API未就绪的问题:import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false document.addEventListener('deviceready', () => { new Vue({ router, render: h => h(App) }).$mount('#app') }, false)测试运行
重新执行cordova run android,验证Vue应用在Android设备/模拟器上正常加载和运行。
内容的提问来源于stack exchange,提问作者Doulla
相关产品推荐
相关产品推荐

