离子4正方体离线获得“未捕获抛出:DOMException:无法执行对‘WorkerGlobalSc

2019-10-28 16:48发布

我试图用Tesseract在我的离线模式Ionic 4应用程序。 为了做到这一点我已经凭本人上有什么解释代码这个例子 ,虽然它与做Ionic 3 ,什么正方体GitHub的解释关于离线模式 。

首先,我已经把Tesseract文件中src\assets\lib目录如下( tesseract-为前缀的文件已经被我添加的):

接下来,我创建了一个基本创建如上面提到的链接显示一个正方体离线模式实例的服务:

  const path = this.webview.convertFileSrc(this.file.applicationDirectory + 'www/assets/lib/');

  this.tesseract = await Tesseract.create({
    langPath: path + 'tesseract-', 
    corePath: path + 'tesseract-index.js',
    workerPath: path + 'tesseract-worker.js',
  });

在代码的一些注意事项:

  • this.file是一个File ,从'@ionic-native/file/ngx'
  • 要将呼叫convertFileSrc是为了避免unable to load resource试图直接加载JavaScript文件,当您收到错误。
  • 如果我登录与this.file.listDir内容this.file.applicationDirectory + 'www/assets/lib/'我可以看到Tesseract文件。

现在,当我部署这一个Android emulator (Pixel 2 API 28)并尝试调用其中这个代码是我获得以下错误,按照在Chrome调试器的功能:

FWIW,这是我的环境:

Ionic:

   ionic (Ionic CLI)             : 4.12.0 (C:\Users\guillem.vicens\AppData\Roaming\nvm\v10.15.3\node_modules\ionic)
   Ionic Framework               : @ionic/angular 4.1.2
   @angular-devkit/build-angular : 0.13.6
   @angular-devkit/schematics    : 7.2.4
   @angular/cli                  : 7.3.6
   @ionic/angular-toolkit        : 1.4.1

Cordova:

   cordova (Cordova CLI) : not installed
   Cordova Platforms     : android 8.0.0
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 3.1.2, (and 6 other plugins)

System:

   Android SDK Tools : 26.1.1 (C:\Users\myUser\AppData\Local\Android\Sdk)
   NodeJS            : v10.15.3 (C:\Program Files\nodejs\node.exe)
   npm               : 6.4.1
   OS                : Windows 10

我在想什么? 什么是访问的正确方法是assets的文件夹?

Answer 1:

我终于通过使用非URL计算的基础,解决我的问题。

我注意到, tesseract-tesseract-js文件正在从以下网址下载:

http://localhost/assets/lib/tesseract-tesseract.js

但是,没有其他的加载。 这使我认为这个问题在某种程度上与在内部使用Tesseract.js与web视图安全策略相撞的相对路径。

改变我的代码做下面的伎俩:

  this.tesseract = await Tesseract.create({
    langPath: 'http://localhost/assets/lib/tesseract-', 
    corePath: 'http://localhost/assets/lib/tesseract-index.js',
    workerPath: 'http://localhost/assets/lib/tesseract-worker.js',
  });

我将要测试这个真实手机和iOS上,但这个回答我原来的问题。



文章来源: Ionic 4 with Tesseract offline getting “Uncaught DOMException: Failed to execute 'importScripts' on 'WorkerGlobalScope'”