转到定义不适用于我的项目(vue 和 sass 文件)[visual-studio-code]

Posted

技术标签:

【中文标题】转到定义不适用于我的项目(vue 和 sass 文件)[visual-studio-code]【英文标题】:Go to definition not working on my project (vue & sass file) [visual-studio-code] 【发布时间】:2020-09-15 14:17:25 【问题描述】:

通过在 vscode 上开发 Nuxt 项目,我对两点感到失望。 在 vscode 上,我的 jsconfig.js 是默认的:


  "compilerOptions": 
    "baseUrl": ".",
    "paths": 
      "~/*": ["./*"],
      "@/*": ["./*"],
      "~~/*": ["./*"],
      "@@/*": ["./*"]
    
  ,
  "exclude": ["node_modules", ".nuxt", "dist"]

它正在处理 vue 文件以自动完成以导入一些组件,例如(使用 ctrl+空格) 但是无法使用 cmd+click 进行下一步定义。我不明白为什么,这真的很烦人。

我不能发布图片(需要 10 个声望),但这是我在 vue 文件上的导入(没有找到...的定义)

import PldFooter from '@/components/Footer';

另外一点,我在 assests 文件夹中使用 sass 文件。编译运行良好,但我无法通过 cmd+click 访问 node_modules 中的文件。这是一个导入示例:

@import "~bulma/sass/base/helpers.sass"; 

==> 没有找到 helpers.sass 的定义

感谢您的帮助,

本。

【问题讨论】:

【参考方案1】:

您是否在一个窗口中打开了多个文件夹(项目)

我不确定你的问题是否和我一样。当我打开 multiples 文件夹(项目) 时,我在 Visual Studio Code 中遇到了“转到定义不起作用”的问题,我解决了。

我使用插件 Vetur 来支持 .vue 文件。 有两种方法效果很好:

    在一个窗口中只打开一个项目 您可以在一个窗口中打开多个项目,但您想要“转到定义”的项目运行良好,它必须是文件夹树中的第一个项目探索者标签。

插件 Vetur 似乎选择了多个项目中的第一个项目作为根文件夹。

我的文件tsconfig.json


  ...

  "compilerOptions": 
    "baseUrl": "./",
    "paths": 
      "@/*": ["src/*"],
    
  ,
  "exclude": ["node_modules", "dist"]

  ...

参考: https://github.com/vuejs/vetur/issues/423#issuecomment-405415204

如果我的回答对您没有帮助,我深表歉意。

【讨论】:

谢谢,这个答案帮助了我。我的 jsconf 文件缺少 compilerOptions,一旦我添加它们,vscode 就能够识别导入和常量【参考方案2】:

根据Vetur 设置指南: 如果你使用Webpack's alias或者TypeScript's path mapping来解析组件,你需要更新Vetur的tsconfig.json或者jsconfig.json

例如:

└── src
    ├── components
    │   ├── a.vue
    │   └── b.vue
    ├── containers
    │   └── index.vue
    ├── index.js
    └── jsconfig.json

jsconfig.json:


    "compilerOptions": 
        "baseUrl": ".",
        "paths": 
            "components/*": [
                "src/components/*"
            ]
        
    

index.vue

import a from 'components/a.vue'
import b from 'components/b.vue' 

它解决了我的问题。

【讨论】:

以上是关于转到定义不适用于我的项目(vue 和 sass 文件)[visual-studio-code]的主要内容,如果未能解决你的问题,请参考以下文章

字体的相对路径不适用于 sass-loader

Sass lightness() 函数不适用于 TailwindCSS 主题变量

Vue 路由器、GitHub 页面和自定义域不适用于路由链接

Vite Vue-3 - 项目@不适用于 srcset

Grails 插件 compass-sass 不适用于 grails 版本 2.3.5

(Vue) Axios 设置数据不适用于 2 个属性。我无法解释为啥