首页 > 解决方案 > 找不到模块“./router”的声明文件

问题描述

我有一个基于 TypeScript 的 Vue.js 项目,使用 Visual Studio 2017 作为我的 IDE。

这是“路由器/index.js”文件:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import TimeSheet from '@/components/TimeSheet'

Vue.use(Router)

export default new Router({
    routes: [
        {
            path: '/',
            redirect: {
                name: "Home"
            }
        },
        {
            path: '/home',
            name: 'Home',
            component: Home
        },
        {
            path: '/timesheet',
            name: 'TimeSheet',
            component: TimeSheet
        }
    ]
})

这是我的“main.ts”文件的内容:

import Vue from 'vue';
import App from './App.vue';

Vue.config.productionTip = true;

import router from './router'

new Vue({
    render: h => h(App),
    router
}).$mount('#app')

在这条线上:

import router from './router'

我正进入(状态:

vue.js 找不到模块 './router' 的声明文件

我看到很多关于这个错误的线程,但到目前为止还没有一个提供解决方案。以下是项目的布局方式:

在此处输入图像描述

编辑:

tsconfig.json 的内容

{
  "compilerOptions": {
    "noEmit": true,
    "target": "es5",
    "module": "esnext",
    "strict": true,
    "jsx": "preserve",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "baseUrl": ".",
    "types": [
      "node"
    ],
    "paths": {
      "@/*": [
        "src/*"
      ]
    }
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx"
  ],
  "exclude": [
    "node_modules"
  ]
}

标签: vue.jsvue-router

解决方案


我通过将文件更改为router/index.js来完成此工作index.ts,然后将文件的内容从...更改为

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import TimeSheet from '@/components/TimeSheet'

Vue.use(Router)

export default new Router({
    routes: [
        {
            path: '/',
            redirect: {
                name: "Home"
            }
        },
        {
            path: '/home',
            name: 'Home',
            component: Home
        },
        {
            path: '/timesheet',
            name: 'TimeSheet',
            component: TimeSheet
        }
    ]
})

至...

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home.vue'
import TimeSheet from '@/components/TimeSheet.vue'

Vue.use(Router)

export default new Router({
    routes: [
        {
            path: '/',
            redirect: {
                name: "Home"
            }
        },
        {
            path: '/home',
            name: 'Home',
            component: Home
        },
        {
            path: '/timesheet',
            name: 'TimeSheet',
            component: TimeSheet
        }
    ]
})

推荐阅读