我通常可以在代码中的任何地方使用 File
,但由于某种原因,当我尝试在 vitest 中使用它时,它会抛出此错误。为什么会发生这种情况以及如何解决此错误?
这是我的vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// Configure Vitest (https://vitest.dev/config/)
export default defineConfig({
test: {
/* for example, use global to avoid globals imports (describe, test, expect): */
// globals: true,
},
plugins: [vue()],
})
这是我的测试文件代码。
import { assert, expect, test } from 'vitest'
test('File', () => {
let applicationZip = new File(new Array<Blob>(), "Mock.zip", { type: 'application/zip' })
})
每当我运行 vitest 时,它都会抛出以下错误。
ReferenceError: File is not defined
❯ test/basic.test.ts:25:23
23|
24| test('File', () => {
25| let applicationZip = new File(new Array<Blob>(), "Mock.zip", { type: 'application/zip' })
| ^
26| })
27|
最佳答案
我是通过here发现的File
不在nodejs中,而是由浏览器的DOM提供,因此解释了 vitest 的错误,因为它是纯节点。通过更彻底地阅读 vitest 的文档,我了解到可以使用 jsdom 这样的环境来配置 vitest,它将提供我在测试中需要的 File
对象。使用以下环境设置修改我的 vite.config.ts
后,该错误不再出现。
/// <reference types="vitest" />
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()],
test: {
globals: true,
environment: "jsdom",
},
root: ".",
})
关于typescript - Vitest - 引用错误 : File Is Not Defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74076180/