Importing Vue components in TypeScript file Importing Vue components in TypeScript file vue.js vue.js

Importing Vue components in TypeScript file


From Alex Jover:

If your editor is yelling at the line import App from './App' in main.js file about not finding the App module, you can add a vue-shim.d.ts file to your project with the following content:

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

and write :

import App from './App.vue'

instead of

import App from './App'


Check out vue-class-component. Basically, you must add appendTsSuffixTo: [/\.vue$/] to ts-loader's options and esModule: true to vue-loader's options.

// webpack.config.js{ modules: { rules: [  {    test: /\.ts$/,    exclude: /node_modules|vue\/src/,    loader: "ts-loader",    options: { appendTsSuffixTo: [/\.vue$/] }  },  {    test: /\.vue$/,    loader: 'vue-loader',    options: {      esModule: true    }  }]}}

I may have missed something else.


When using the vue-cli, adapt vue-loader-conf.js as follows:

var utils = require('./utils')var config = require('../config')var isProduction = process.env.NODE_ENV === 'production'module.exports = {  loaders: utils.cssLoaders({    sourceMap: isProduction      ? config.build.productionSourceMap      : config.dev.cssSourceMap,    extract: isProduction, esModule: true  }), esModule: true}