“ Ionic V4-构建产品”找不到cordova.js脚本标记。插件加载可能失败。“

时间:2019-04-07 10:38:19

标签: angular cordova ionic4

在Ionic v4中,当我运行以生产模式(ionic cordova build android --prod)捆绑销售的应用程序时,控制台会说“找不到cordova.js脚本标记。插件加载可能会失败。应用程序的某些内容(如字体)将被卸载(我看到的是Roboto Font,而不是我的自定义字体)。否则,当我尝试不使用生产模式进行编译**(离子Cordova构建android)**时,该应用程序运行时没有控制台错误。

我的离子信息:

离子(离子CLI):4.12.0    离子框架:@ ionic / angular 4.2.0    @ angular-devkit / build-angular:0.13.8    @ angular-devkit / schematics:7.2.4    @ angular / cli:7.3.8    @ ionic / angular-toolkit:1.4.1

科尔多瓦:

cordova(Cordova CLI):8.1.2(cordova-lib@8.1.1)    Cordova平台:Android 7.1.4    Cordova插件:cordova-plugin-ionic-keyboard 2.1.3,cordova-plugin-ionic-webview 3.1.2(和其他7个插件)

有人也面临这个问题吗?

干杯

3 个答案:

答案 0 :(得分:1)

当我从ionic 3迁移到ionic 4时,我遇到了同样的问题。当我开始一个新的项目(默认为选项卡)并复制代码后,它消失了。

似乎有人找到了解决方法:

  

我不再有这个问题。在angular.json中,我设置了buildOptimizer   并且AoT为false,那么我就可以使用--prod进行构建。当我   重新激活AoT,我在日志中看到了问题。依赖   在迁移过程中,注入的方式是错误的。   来源:Github

答案 1 :(得分:0)

在开发环境中,地址为cordova.js并找到了文件。 在产品中,文件名被散列到诸如cordova.4bdae3fd4f9978d7dcd8.js之类的文件中。

因此,您需要将函数findCordovaPath()修改为

function findCordovaPath () {
  var path = null;
  var scripts = document.getElementsByTagName('script');
  var startterm = '/cordova.';
  var term = '/cordova.js';
  for (var n = scripts.length - 1; n > -1; n--) {
    var src = scripts[n].src.replace(/?.*$/, ''); // Strip any query param CB-6007).
    var idx = src.indexOf(startterm);
    if (idx >= 0){
      term = src.substring(idx+1);
    }
    if (src.indexOf(term) === (src.length - term.length)) {
      path = src.substring(0, src.length - term.length) + '/';
      break;
    }
  }
  return path;
}

答案 2 :(得分:0)

通过设置angular.json"optimization": false通过"outputHashing": "none"配置进行临时修复:

"configurations": {
        "production": {
          ...
          "optimization": false,
          "outputHashing": "none",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "aot": true,
          "extractLicenses": true,
          "vendorChunk": false,
          "buildOptimizer": true,
          ...
        },
        ...
      }