typescript - Vitest - 引用错误 : File Is Not Defined

标签 typescript vue.js vite vitest

我通常可以在代码中的任何地方使用 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/

相关文章:

javascript - vuejs this.posts.$remove(postId) 不是函数

javascript - Vuejs - 过滤和排序,冲突?

github-actions - GitHub Action Vitest CI 管道

javascript - 如何查看 Vite 项目中的公共(public)目录进行热重载?

css - 使用 React Styled Components 在两种类型的组件之间共享相同的样式

TypeScript:从可区分的联合中推断类型以创建 map ?

javascript - TypeScript:模块和具有静态成员的类有什么区别?

css - 使用 Vue 和 Flexbox 的响应式表格

laravel - 如何配置 nginx、vite 和 laravel 通过反向代理与 HMR 一起使用?

angular - RxJs:forkJoin() 未运行,因为我的可观察列表不完整