uni-app A文件编写的class中的异步函数在B文件无法通过alt+左键定位到函数代码

uni-app A文件编写的class中的异步函数在B文件无法通过alt+左键定位到函数代码

开发环境 版本号 项目创建方式
PC win10 HbuilderX

示例代码:

class classA {  
    constructor(arg) {  

    }  
    static a(){  
        console.log("我是a函数");  
        return "我是a函数";  
    }  

    static async b(){  
        console.log("我是b函数");  
        return "我是b函数";  
    }  

}  
module.exports = classA
const classA = require('./a.js');     
module.exports = {  
    main: async (event) => {  
        let res = {};  

        res.a = classA.a();  

        res.b = await classA.b();  

        return res;  
    }  
}  

鼠标移动到b文件的 classA.a(); 的a上,alt + 左键 可以直接定位到 a文件的 a函数代码

而 鼠标移动到b文件的 classA.b(); 的b上,alt + 左键 无法定位到 a文件的 b函数代码

操作步骤:

按上面的示例代码,创建2个文件,代码复制进去,然后试试在 b文件中 alt+左键 分别点 a 和 b,会发现a可以跳转,b不可以跳转

预期结果:

a 和 b函数都可以直接跳到A文件对应的函数代码

实际结果:

a函数可以,而b函数不可以(结论是:async异步的函数不行,非异步的就可以)


更多关于uni-app A文件编写的class中的异步函数在B文件无法通过alt+左键定位到函数代码的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app A文件编写的class中的异步函数在B文件无法通过alt+左键定位到函数代码的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个问题是由于HBuilderX对异步函数的代码跳转支持不够完善导致的。在静态分析代码时,IDE可能无法正确识别async标记的函数引用。

解决方案:

  1. 临时解决方法:在调用异步函数时,可以使用// @ts-ignore注释来辅助IDE识别,但这只是权宜之计。

  2. 配置jsconfig.json:在项目根目录创建jsconfig.json文件,配置TypeScript编译器选项以改善代码导航:

{
  "compilerOptions": {
    "target": "esnext",
    "module": "commonjs",
    "checkJs": true
  },
  "exclude": [
    "node_modules",
    "unpackage"
  ]
}
  1. 使用JSDoc注释:在classA的异步函数前添加类型注释:
class classA {
    /**
     * @returns {Promise<string>}
     */
    static async b() {
        console.log("我是b函数");
        return "我是b函数";
    }
}
回到顶部