Как использовать пути в vitest с Nuxt3?

У меня есть nuxt3_rc_3проект и использование vitestдля тестирования утилит, которые я написал для проекта

utils/index.tsимпортирует несколько констант из ~~/config/constants

При написании теста в test/utils/index.test.tsЯ импортировал одну функцию для написания теста, когда я запускаю тест, я получаю эту ошибку

      FAIL  test/utils/index.test.ts [ test/utils/index.test.ts ]
Error: [vite-node] Failed to load ~~/config/constants

Я думаю, проблема в том, что витест не читает ./.nuxt/tsconfig.jsonдля поиска относительного пути или может быть что-то еще не так, пожалуйста, помогите.

tsconfignuxt3 для пути

      ...
"paths": {
      "~~": [
        "."
      ],
      "~~/*": [
        "./*"
      ],
      "@@": [
        "."
      ],
      "@@/*": [
        "./*"
      ],
      "~": [
        "."
      ],
      "~/*": [
        "./*"
      ],
      "@": [
        "."
      ],
      "@/*": [
        "./*"
      ],
      "assets": [
        "assets"
      ],
      "public": [
        "public"
      ],
      "public/*": [
        "public/*"
      ],
      "#app": [
        "node_modules/nuxt/dist/app"
      ],
      "#app/*": [
        "node_modules/nuxt/dist/app/*"
      ],
      "vue-demi": [
        "node_modules/nuxt/dist/app/compat/vue-demi"
      ],
      "pinia": [
        "pinia/dist/pinia"
      ],
      "@intlify/shared": [
        "node_modules/@intlify/shared/dist/shared.esm-bundler"
      ],
      "@intlify/core-base": [
        "node_modules/@intlify/core-base/dist/core-base.esm-bundler"
      ],
      "@intlify/devtools-if": [
        "node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler"
      ],
      "vue-i18n": [
        "node_modules/vue-i18n/dist/vue-i18n.esm-bundler"
      ],
      "#head": [
        "node_modules/nuxt/dist/head/runtime"
      ],
      "#head/*": [
        "node_modules/nuxt/dist/head/runtime/*"
      ],
      "#components": [
        ".nuxt/components"
      ],
      "#imports": [
        ".nuxt/imports"
      ],
      "#build": [
        ".nuxt"
      ],
      "#build/*": [
        ".nuxt/*"
      ]
    }
...

2 ответа

Использование путей конфигурации ts nuxt в качестве псевдонима в конфигурации vitest решает проблему.

      // file alias.ts

import { resolve } from 'path'

const r = (p: string) => resolve(__dirname, p)

export const alias: Record<string, string> = {
  '~~': r('.'),
  '~~/': r('./'),
  '@@': r('.'),
  '@@/': r('./'),

  ... other paths
}
      // vitest.config.ts
import { defineConfig } from 'vite'
import { alias } from './alias'

export default defineConfig({
  root: '.',
  esbuild: {
    tsconfigRaw: '{}',
  },
  resolve: {
    alias,
  },
})

У меня есть проблема. Я понятия не имею о проблеме. В настоящее время я открыл обсуждение для команды nuxt; может они нам помогут.

https://github.com/nuxt/nuxt.js/discussions/10480

Другие вопросы по тегам