菜鸡
菜鸡
  • 发布:2023-03-22 17:58
  • 更新:2023-03-22 17:58
  • 阅读:264

【报Bug】源码实锤,在vue3项目中使用lang="js"的script标签时,无法在uni:inject-try插件中对uni的api进行注入

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

浏览器平台: Chrome

浏览器版本: 107.0.1418.52 (正式版本) (64 位)

项目创建方式: CLI

CLI版本号: 3.0.0-3070320230222002

App下载地址或H5⽹址:

示例代码:

见BUG 描述

操作步骤:

在vue3+typescript项目中,使用<script lang="js"></script>编写带有uni相关的api的代码

预期结果:

注入uni相关api

实际结果:

未注入uni相关api

bug描述:

isJsFile函数中,检查了script标签的lang属性要是ts
https://github.com/dcloudio/uni-app/blob/next-publish-alpha/packages/uni-cli-shared/src/vite/utils/url.ts#L76

export function isJsFile(id: string) {  
  const { filename, query } = parseVueRequest(id)  
  const isJs = EXTNAME_JS_RE.test(filename)  
  if (isJs) {  
    return true  
  }  
  const isVueJs =  
    EXTNAME_VUE.includes(path.extname(filename)) &&  
    (!query.vue || query.setup || hasOwn(query, 'lang.ts'))  
  if (isVueJs) {  
    return true  
  }  
  return false  
}

uni:inject-try插件中调用了isJsFile函数检查文件类型
https://github.com/dcloudio/uni-app/blob/next-publish-alpha/packages/uni-cli-shared/src/vite/plugins/inject.ts#L87

export function uniViteInjectPlugin(  
  name: string,  
  options: InjectOptions  
): Plugin {  
  // ......  
        if (!isJsFile(id)) return null  
  // ......  
}
2023-03-22 17:58 负责人:无 分享
已邀请:

要回复问题请先登录注册