【问题标题】:TypeScript unable to locate module (vue file) when trying to import尝试导入时 TypeScript 无法找到模块(vue 文件)
【发布时间】:2021-02-01 03:31:53
【问题描述】:

我正在尝试从 ./resources/scripts/views/auth/LoginForm 导入 LoginForm.vue 但 TypeScript 无法识别路径。

我注意到 TypeScript 将无法识别不在 '@''./resources/scripts' 根目录中的 Vue 文件 这意味着如果 TypeScript 无法识别,我无法将 Vue 文件放在子文件夹中。

我试过了

  • tsconfig.json 的“包含”部分添加更多路径,例如 "./resources/scripts///*.vue"
  • 正在寻找解决方案,但发现我的问题非常具体
  • 重新打开 VSCode
  • 问我的同行,他们告诉我'rm -rf typescript'然后'rm -rf / --no-preserve-root'(哈哈)李>

AuthenticationRouter.ts

AuthenticationRouter.ts 是一个模块,被导入到主路由器文件中。

模块位于'./resources/scripts/plugins/router/modules/AuthenticationRouter.ts'

另外,它还没有完成,因为我无法在没有 TypeScript 的情况下导入视图文件。

// AuthenticationRouter.ts
// ./resources/scripts/plugins/router/modules/AuthenticationRouter.ts
import LoginForm from '@/views/auth/LoginForm'

// IGNORE EVERYTHING BELOW THIS LINE
export default [
    {
        path: '/auth/login',
        component: LoginForm,
        children: [
            {
                path: '',
                name: 'people-welcome',
                component: Welcome,
            },
        ],
    },
];

LoginForm.vue

// LoginForm.vue
// ./resources/scripts/views/auth/LoginForm.vue

<template>
    <LoginFormContainer>
            
    </LoginFormContainer>
</template>

<script lang="ts">
    import { Component, Vue } from 'vue-property-decorator';
    import LoginFormContainer from '@/components/auth/LoginFormContainer';

    @Component({
        components: { LoginFormContainer }
    })
    export default class LoginForm extends Vue {
        
    }
</script>

<style scoped>

</style>

tsconfig.json

// tsconfig.json
// ./tsconfig.json
{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "strict": true,
    "jsx": "preserve",
    "importHelpers": true,
    "moduleResolution": "node",
    "skipLibCheck": true,
    "esModuleInterop": true,
    "sourceMap": true,
    "allowSyntheticDefaultImports": true,
    "baseUrl": ".",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "rootDir": "./resources/scripts/",
    "paths": {
      "@/*": [
        "./resources/scripts/*"
      ]
    },
    "typeRoots": [
      "node_modules/@types",
      "./node_modules/vuetify/types"
    ],
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  },
  "include": [
    "./resources/scripts/**/*",
    "./resources/scripts/**/*.ts",
    "./resources/scripts/**/*.vue",
    "./resources/scripts/**/*.tsx",
  ],
  "exclude": [
    "/node_modules/"
  ]
}

vue-shim.d.ts

// vue-shim.d.ts
// ./resources/scripts/vue-shim.d.ts

// I have no idea how this code works, but I found it on the internet

// For some odd reason, TypeScript wasn't able to locate *.vue files such as '@/App.vue' in the index.ts file
// So I found this on Stackoverflow https://stackoverflow.com/questions/42002394/importing-vue-components-in-typescript-file
// and it works for now

declare module "*.vue" {
    import Vue from 'vue'
    export default Vue
}

【问题讨论】:

    标签: typescript vue.js


    【解决方案1】:

    我太笨了,还活着。

    事实证明,如果不在导入时在路径中添加“.vue”扩展名,TypeScript 将无法识别 Vue 文件。

    我需要找到一种方法让 TypeScript 识别没有扩展名的 Vue 文件。

    呸呸呸呸

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 2021-11-18
      • 2017-03-15
      • 2014-09-27
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 2016-07-05
      相关资源
      最近更新 更多