【问题标题】:Vue js 2.5.2 & typescript upgrade errorVue js 2.5.2 & typescript 升级错误
【发布时间】:2018-03-28 08:14:14
【问题描述】:

我正在尝试使用 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\proj\src\Proj.Web\node_modules\vue-typescript-import-dts\index.d.ts (3,36):错误 TS2304:找不到名称“Vue”。

我的设置在 vue js 2.4 上运行良好。

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

之前,我们已经推荐使用 ES 风格的导入(import Vue 来自'vue')到处都有“allowSyntheticDefaultImports”:true tsconfig.json。新的类型将正式迁移到 ES 风格 导入/导出语法,因此不再需要配置,并且用户 在所有情况下都需要使用 ES 样式的导入。

有人知道我错过了什么吗?

【问题讨论】:

    标签: typescript vue.js vuejs2


    【解决方案1】:

    我刚刚在 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!'
        }
    })
    

    【讨论】:

    • 删除了 types 部分,allowSyntheticDefaultImports 做到了!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 2021-10-29
    • 1970-01-01
    • 2018-11-14
    • 2012-10-18
    • 2018-05-24
    • 2023-03-07
    相关资源
    最近更新 更多