收藏
回答

kbone 编译时报 'userAgent' of undefind 问题 ?

kbone 在自定义app.js中 import TIM from 'tim-wx-sdk' 编译时报错,该怎么解决?

回答关注问题邀请回答
收藏

1 个回答

  • 小程序技术专员-june
    小程序技术专员-june
    2020-07-02

    因为 tim-wx-sdk 的设计兼顾了 Web 端,会走特殊的判断是否在 Web 端。kbone 这里的 app.js 不属于任何页面,所以不会有标准的 window/document 对象,但是为了保证代码正确运行,会注入假的 widnow/document 对象,导致被 tim-wx-sdk 判断成是 Web 端了。

    兼容方案:更新 mp-webpack-plugin 到 1.0.1 版本,然后在其配置上补上:

    generate: {
      appEntryInject: `window.navigator = {product: 'NS'};`,
    },
    

    他会在 app.js 之前注入一段代码,确保 tim-wx-sdk 不会判断成是 Web 端。

    2020-07-02
    有用 1
    回复 5
    • Y W L
      Y W L
      2020-07-30
      创建图片消息 报 HTMLInputElement is not defined
      2020-07-30
      回复
    • Y W L
      Y W L
      2020-07-30
      还需要配置什么?
      2020-07-30
      回复
    • 小程序技术专员-june
      小程序技术专员-june
      2020-07-31回复Y W L
      给下可复现的 demo?
      2020-07-31
      回复
    • 小程序技术专员-june
      小程序技术专员-june
      2020-07-31回复Y W L
      如果代码片段放不下的话,可将代码脱敏后发到 wx-miniprogram@qq.com
      2020-07-31
      回复
    • 小程序技术专员-june
      小程序技术专员-june
      2020-08-05回复Y W L
      问题在于 tim-sdk 里还是将环境判断成是 Web 环境了,因为 window 对象不为 undefined。可以这样操作:安装 file-wrapper-loader,这个 loader 可以给文件前后追加内容,然后 webpack 配置补充此以下规则,这样在处理对 sdk 的 import 时,会在 sdk 代码前补充 var window=undefined; 确保不会被判断成是 Web 环境。


      改造后的代码包已通过邮件发回。
      2020-08-05
      1
      回复
登录 后发表内容
问题标签