uni-app 更新3.4.6后 vue文件内调用function 转到定义失效 无法定位到该function的位置

uni-app 更新3.4.6后 vue文件内调用function 转到定义失效 无法定位到该function的位置

开发环境 版本号 项目创建方式
HbuilderX 3.4.6 -

示例代码:

<template>  
    <div id="app">  
        <div @click="test()">模板内调用方法</div>  
    </div>  
</template>  

<script>  
    export default {  
        data() {  
            return {  

            }  
        },  
        created() {  
            this.test();  
        },  
        methods: {  
            test() {  
                console.log("这是一个测试方法")  
            },  
            func2(){  
                this.test();  
            }  
        }  
    }  
</script>

操作步骤:

如上代码所示,按着alt键,鼠标指向created或func2中的test方法,会发现转到定义功能失效

预期结果:

test方法会高亮,并出现下滑线,此时点击鼠标,会跳转到tets方法的位置

实际结果:

test方法没有高亮,也没有出现下滑线,此时点击鼠标,没有任何反应

bug描述:

在vue文件内,调用function,无法转到定义,如下代码所示,只有在模板内调用test方法才能转到定义,在vue生命周期内或者func2方法内调用test方法都无法转到定义

7 回复

确实是bug,感谢反馈,下期修复


希望最近可以补发一个版本 确实挺影响使用的

+1 刚准备提这个bug

3.47这个版本说是修复了,但依然不行,我是php,3.46之前都很好用的

等下一个版本吧,下一个版本大量修复提示问题

回复 愿随风丶飘雪: 嗯,不知道啥时候修复

在 uni-app 更新到 3.4.6 版本后,如果在 Vue 文件中调用 function 时,发现“转到定义”功能失效,无法定位到该 function 的位置,可能是由于以下几个原因导致的。以下是一些可能的解决方案:


1. 检查 IDE 的 Vue 插件

确保你使用的 IDE(如 VSCode)已经安装了最新版本的 Vue 插件,例如:

  • Volar(推荐用于 Vue 3 项目)
  • Vetur(适用于 Vue 2 项目)

如果插件未正确安装或版本过低,可能会导致“转到定义”功能失效。


2. 检查 tsconfig.jsonjsconfig.json 配置

如果你的项目是 TypeScript 项目,确保 tsconfig.json 文件中包含以下配置:

{
  "compilerOptions": {
    "moduleResolution": "node",
    "baseUrl": "./",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*"]
}

如果是 JavaScript 项目,确保 jsconfig.json 文件中包含类似的配置:

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*"]
}

这些配置可以帮助 IDE 正确解析路径和模块。


3. 重启 IDE 和 TypeScript 服务

有时候,IDE 的 TypeScript 服务可能会卡住或出现异常。尝试以下操作:

  • 重启 IDE。
  • 在 VSCode 中,按下 Ctrl + Shift + P,输入 Restart TS server,然后选择重启 TypeScript 服务。

4. 检查 uni-app 版本兼容性

uni-app 3.4.6 可能与某些插件或工具链存在兼容性问题。尝试以下操作:

  • 回退到之前的稳定版本,确认是否是版本问题。
  • 检查 uni-app 官方文档或社区,查看是否有类似问题的反馈和解决方案。

5. 检查代码结构

确保你的 function 定义在正确的位置,并且没有被动态导入或异步加载。例如:

<script setup>
// 确保 function 定义在同一个文件或正确导入
function myFunction() {
  console.log('Hello');
}
</script>

如果 function 定义在其他文件中,确保正确导入:

<script setup>
import { myFunction } from './utils';
</script>

6. 清理缓存

有时候 IDE 的缓存可能会导致解析问题。尝试以下操作:

  • 删除 node_modulespackage-lock.json,然后重新运行 npm installyarn install
  • 在 VSCode 中,按下 Ctrl + Shift + P,输入 Clear Editor History,清理编辑器历史记录。

7. 更新 uni-app 和依赖

确保你的 uni-app 和相关依赖都是最新版本。运行以下命令:

npm update uni-app
npm update

8. 检查项目配置

确保 vue.config.jsvite.config.js 中的配置没有影响 IDE 的解析。例如,检查 alias 配置是否正确:

// vue.config.js
const path = require('path');
module.exports = {
  configureWebpack: {
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src'),
      },
    },
  },
};
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!