Vue 和 TypeScript:找不到名称“出口”

Posted

技术标签:

【中文标题】Vue 和 TypeScript:找不到名称“出口”【英文标题】:Vue and TypeScript: Cannot find name 'exports' 【发布时间】:2019-07-23 00:33:47 【问题描述】:

将我的 App.vue 更改为使用 typescript 后,我​​现在收到编译器错误:

[tsl] \src\main.ts(2,23) 中的错误 TS2304:找不到名称“出口”。

如果我让 vue-serve 从更改中重新编译,我会再次遇到同样的错误,但也会在 App.vue:

[tsl] src\main.ts(2,23) 中的错误 TS2304:找不到名称“出口”。

[tsl] src\App.vue.ts(2,23) 中的错误 TS2304:找不到名称“出口”。

[tsl] src\App.vue.ts(13,1) 中的错误 TS2304:找不到名称“出口”。

使用 VueCli3 创建的简单示例 typescript vue App:

ma​​in.ts

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from '@/store'

new Vue(
  router,
  store,
  components:  App  //Removed render: h=> h() since it was throwing "any type" TS error. "Exports" error would throw either way.
).$mount('#app')

App.vue

<template>
  <div id="app">
    <router-view></router-view>
  </div>
</template>

<script lang="ts">
import Vue from 'vue';
import Component from "vue-class-component";

@Component
export default class App extends Vue 



</script>

为什么会这样?这是一个默认的 vue-cli 应用程序,除了 App.vue 已更改为使用打字稿。

所有适当的 webkit 零碎都存在(我已经为此苦苦挣扎了 2 周),因为这与其他 typescript 文件(如和组件路由器使用)和 vue typescript 文件完全兼容,直到App.vue使用打字稿,或App.vue 导入的任何模块都使用打字稿。

有时它编译得很好,而错误却显示在控制台ReferenceError: exports is not defined 中。我无法可靠地重现其中一个,有时会引发编译器错误,有时会在运行时引发引用错误。

【问题讨论】:

【参考方案1】:

我过去也遇到过类似的问题。

可以尝试导入类似

import Vue from 'vue'
import App from './App.vue'
import * as router from './router'
import * as store from '@/store'
在 ES6 上导入的方式也是如此

【讨论】:

以上是关于Vue 和 TypeScript:找不到名称“出口”的主要内容,如果未能解决你的问题,请参考以下文章

Vue3+TypeScript项目报错: 找不到名称“require”。是否需要为节点安装类型定义?

Angular 和 Typescript:找不到名称 - 错误:找不到名称

Typescript 和 JQuery 编译错误:找不到名称“$”

在 Typescript 文件中导入时找不到 Vue 模块

TypeScript - 找不到名称“进程”

Vue + Typescript + Webpack:模块构建失败 - 找不到 vue.esm.js