首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用TypeScript时如何在单文件组件中导入Vue?

使用TypeScript时如何在单文件组件中导入Vue?
EN

Stack Overflow用户
提问于 2019-09-17 10:08:41
回答 1查看 2.3K关注 0票数 7

我有一个文件组件,我需要导入Vue:

代码语言:javascript
运行
复制
<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'
...
@Component({...})
export class Comp extends Vue {...}

我在浏览器中将vue.js作为模块导入:

代码语言:javascript
运行
复制
<script type="module" src="module/vue/vue.js"></script>

但我明白错误

代码语言:javascript
运行
复制
Uncaught TypeError: Class extends value undefined is not a constructor or null

eval()vue-cli-service --target lib生成的某个位置。我也把证监会作为一个模块来加载:

代码语言:javascript
运行
复制
<script type="module" src="module/comp/comp.js"></script>

作为解决办法,我尝试在comp.js顶部添加导入

代码语言:javascript
运行
复制
import Vue from '/module/vue/vue.js'
import Component from '/module/vue-class-component/vue-class-component.js'
(function webpackUniversalModuleDefinition(root, factory) {
...

但这没什么用。

如何将导入重新连接到将在web服务器上使用的路径?我检查了webpack的选择,但只找到了resolve,这似乎可以帮助webpack在包装时找到东西。我需要一个“输出重写”的选项。

注意,我使用的是ES模块,而不是CommonJS或RequireJS。tsconfig.json

代码语言:javascript
运行
复制
compilerOptions: {"target": "ES2016", module: "ES2015" } 

Update I尝试将最终路径放入.vue文件,并使用vue.config.js中的configureWebpack.resolve.alias来允许Vue编译器定位模块,但这也不起作用。

vue.config.js

代码语言:javascript
运行
复制
module.exports = {
    runtimeCompiler: true,
    configureWebpack: {
        externals: [
            'module/vue/vue',
            'module/vue-class-component/vue-class-component',
        ],
        resolve: {
            alias: {
                'module/vue/vue': 'vue/dist/vue.esm.js',
                'module/vue-class-component/vue-class-component': 'vue-class-component/dist/vue-class-component.esm.js'
            }
        },
    }
}

comp.vue

代码语言:javascript
运行
复制
...
import Vue from './module/vue/vue'
import Component from 'module/vue-class-component/vue-class-component'

只给

代码语言:javascript
运行
复制
ERROR in .../src/comp.vue
16:17 Cannot find module 'module/vue/vue'.
EN

回答 1

Stack Overflow用户

发布于 2019-09-25 15:11:01

概述

您可以在configureWebpack中添加vue.config.js来修改Webpack的配置,而Webpack则可以使用externals解决这个问题。

处理外部

外部提供了一种导入外部库的方法。

在webpack的配置中,您将添加一条类似于此的行。

让我们以lodash为例,因为导入和全局变量是不同的。

代码语言:javascript
运行
复制
// webpack.config
externals: {
  'lodash': '_'
}

_是webpack可以抓住的全局变量,lodash是它公开的导入。

在这一点上,你可以这样做。

代码语言:javascript
运行
复制
import * as lodash from 'lodash'

处理TypeChecking

要使用此方法处理类型检查,npm install @types/...和TypeScript将获取该导入的类型。

Webpack在vue.config.js中的修改

您可以阅读此这里,但只需将以下内容添加到vue.config.js文件中即可。

代码语言:javascript
运行
复制
// vue.config.js
module.exports = {
  configureWebpack: {
    externals: {
      'lodash': '_'
    }
  }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57971988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档