科大讯飞 Cannot read property 'createChildCompiler' of undefined This socket has be

613 阅读1分钟

应用场景: 实现实时语音播放后端返回的新闻资讯(富文本)功能

应用技术: 科大讯飞的在线语音合成功能(WebApi) (websoket) www.xfyun.cn/services/on…

demmo实现步骤:

登陆官网 --> 我的应用 --> 创新应用 --> 点击创建好的应用 --> 语音合 成(在线) --> WebApi文档 --> 下载 js/demo(www.xfyun.cn/doc/tts/onl…) --> 将接口认证信息(AppID,APISecret,Apikey考入demo中) --> 下载依赖(npm i) --> 启动项目

 上述步骤是实现基本的语音合成功能demo
 

项目中实际应用:

1.下载相关依赖 npm i work-loader js-base64 -dev--save
   注意:work-loader的版本号一定和demo一致(2.0.0)否则会报下面的错

71c624f7087fb1bc01a46625765fea9.png

2.拷贝demo中核心代码,注意appi等已修改
  

image.png

3.项目中引用

image.png

4.富文本处理(转为普通文本)
 htmlStr.replace(/<[^<>]+>/g, '')
                .replace(/&nbsp;/gi, '')
                .replace(/&rdquo;/gi, '')
                .replace(/&ldquo;/gi, ''),
                

!!!注意项目启动可能会报的错误: 报错1:_js_transcode_worker_js__WEBPACK_MODULE_36___default.a is not a constructor 964021d1d9c6e7f61c0c21ec55a68ca.png 报错2:Cannot read property 'createChildCompiler' of undefined 619d152daa407d751149ba984e36917.png 报错3:This socket has been ended by the other party at Socket.writeAfterFIN

image.png

解决方案:

   1.修改原文件名:transcode.worker.js===>text.workers.js(你喜欢的语义化的          文件即可)
   2.修改vue.config.js中webapck的配置
     1.修改单线程配置
       parallel: false
     2.修改webpack中对work-loader的配置
        config.module
              .rule('worker')
              .test(/\.workers\.js$/i)
              .use('worker-loader')
              .loader('worker-loader')
              .options({
                 inline: true,
                 name: 'workerName.[hash].js',
         });
   

image.png 参考解决链接:ask.csdn.net/questions/1…