Vue js 2.5.2&打字稿升级错误

时间:2017-10-16 18:10:39

标签: typescript vue.js vuejs2

我尝试使用typescript 2.5.3将vue js升级到2.5.2。

这是我的index.ts文件:

import Vue from 'vue'

var app = new Vue({
    el: '#app',
    data: {
        message: 'Hello Vue!'
    }
})

这是我的tsconfig.json

{
  "compilerOptions": {
    "outDir": "./wwwroot/build/",
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node",
    "lib": [
      "dom",
      "es5",
      "es2015.promise"
    ],
    "types": [
      "vue-typescript-import-dts"
    ],
    "experimentalDecorators": true
  },
  "include": [
    "Features/**/*.ts"
  ],
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

以下是错误消息:

  

错误   C:\ dev的\凸出的\ src \ Proj.Web \ node_modules \ VUE-打字稿进口-DTS \ index.d.ts   (3,36):错误TS2304:找不到姓名' Vue'。

我的设置与vue js 2.4一起正常工作。

我删除" allowSyntheticDefaultImports":true, as said here

  

以前,我们已经建议使用ES样式的导入(导入Vue   来自'vue')到处都是“allowSyntheticDefaultImports”:真实的   tsconfig.json。新的类型将正式转向ES风格   导入/导出语法,以便不再需要配置和用户   在所有情况下都需要使用ES风格的导入。

任何人都能看到我失踪的东西?

1 个答案:

答案 0 :(得分:2)

我刚刚在VSCode中启动了一个新文件夹,我有几点意见。

NPM上的Vue包中包含类型信息,因此您不需要为Vue获取其他类型(即从NPM获取@types/vue

"dependencies": {
    "vue": "^2.5.2"
}

只使用vue包,没有以下部分:

"types": [
  "vue-typescript-import-dts"
],

我可以使用您的示例代码编译所有内容。

详情......

的package.json

{
    "name": "sample-vue",
    "private": true,
    "dependencies": {
        "vue": "^2.5.2"
    }
}

tsconfig.json

{
    "compilerOptions": {
        "outDir": "./wwwroot/build/",
        "noImplicitAny": false,
        "noEmitOnError": true,
        "removeComments": false,
        "sourceMap": true,
        "target": "es5",
        "module": "es2015",
        "moduleResolution": "node",
        "lib": [
            "dom",
            "es5",
            "es2015.promise"
        ],
        "experimentalDecorators": true
    },
    "include": [
        "*.ts"
    ],
    "exclude": [
        "node_modules",
        "wwwroot"
    ]
}

app.ts

import Vue from 'vue'

var app = new Vue({
    el: '#app',
    data: {
        message: 'Hello Vue!'
    }
})