尝试在一个已经存在的vite(vue 3,typescript)项目上设置vitest。
我的vite. config. ts看起来像这样:
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
export default defineConfig({
test: {
globals: true,
environment: 'jsdom',
},
plugins: [vue()],
});
但在VS代码中,它会抱怨:
悬停时,我看到:
类型为"{test:{全局:布尔值;环境:字符串;};插件:"插件[];}"不能赋给类型"UserConfigExport"的参数。对象文本只能指定已知属性,并且类型"UserConfigExport"中不存在"test"。ts(2345)
我可以让它消失,如果我改变这一行:
import { defineConfig } from 'vite';
收件人:
import { defineConfig } from 'vitest/config';
但是为什么呢?这是怎么回事?为什么我必须从vitest导入defineConfig才能让它支持test属性呢?
4条答案
按热度按时间2cmtqfgy1#
因为这是TypeScript的工作方式。Vite配置接口不知道任何关于Vitest的信息,TS不允许过多的属性(不是由类型/接口定义的属性)
因为Vite本身不知道Vitest及其配置,所以Vitest必须extend Vite配置(定义为TS接口)
要使用此扩展接口(而不是原始接口),必须首先导入它。
或者,您也可以使用Configuring Vitest中介绍的"三斜杠命令
mftmpeh82#
我也遇到过类似的情况,问我同样的问题,结果是这样的:
可能会有帮助。
cedebl8k3#
下面是我所做的,以防有人还在寻找解决方案。我创建了自己的类型,并扩展到
UserConfig
。然后,我将
config
对象的类型强制转换为我的自定义接口-这也为新的
test
属性启用了intellisense。另外,你不需要声明/// <reference types="vitest" />
。这可能会有帮助。57hvy0tb4#
我分开了文件,因为我从这个问题中得到了,如果我把导入改为vitest,我在插件React行中得到了另一个错误。
维生素试验:
地址: