recherche
Questions et réponses Vite HMR ne peut pas détecter les modifications apportées aux composants dans les sous-dossiers

0

Dans le projet Vue + Vite, j'ai cette structure de dossiers

Le problème est que vite ne peut pas détecter les changements (ctrl+s) dans A.vue ou B.vue, c'est-à-dire les composants imbriqués sous NestedFolder dans le dossier des composants. Tout le reste fonctionne bien.

Mon vite.config.js ressemble à ceci,

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue()
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
      '@public': fileURLToPath(new URL('./public', import.meta.url))
    }
  },
  server: {
    proxy: {
      '/api': {
        target: 'XXX',
        changeOrigin: true,
        secure: false,      
        ws: true,
      }
    }
  }
})

J'ai essayé la fonction HMR personnalisée selon la documentation de l'API vite HMR et je lui ai demandé d'envoyer un rechargement complet en l'utilisant.

...
plugins: [
    vue(),
    {
      name: 'custom-hmr',
      enforce: 'post',
      // HMR
      handleHotUpdate({ file, server }) {
        if (file.endsWith('.vue')) {
          console.log('reloading json file...');
  
          server.ws.send({
            type: 'reload',          
            path: '*'
          });
        }
      },
    }
  ], ...

J'ai consulté la documentation de l'API HMR de vite mais je ne sais pas comment envoyer des événements de mise à jour à vite lors de l'utilisation d'une fonction hmr personnalisée

Toute aide/conseil sur la façon de résoudre ce problème serait grandement apprécié.

Your Answer
soumettre

1 réponse
0

D'accord, j'ai résolu le problème. Le problème ne vient pas des dossiers imbriqués. Vite semble ignorer les composants importés à l'aide de chemins absolus.

Par exemple, Vite ne détectera pas les modifications apportées aux composants importés :

import Dropdown from '@/components/GlobalDropdown.vue'
//@ resolves to /src

Mais détecter les changements relatifs aux importations :

import LoadingSpinner from '../LoadingSpinner.vue'

Je ne trouve aucun paramètre permettant de résoudre ce problème. Mais le chemin relatif de l’importation du composant résout ce problème. Est-ce un problème?

2023-11-05 00:40:17

soumettre

Hot Tools

Collection de bibliothèques d'exécution vc9-vc14 (32 + 64 bits) (lien ci-dessous)

Collection de bibliothèques d'exécution vc9-vc14 (32 + 64 bits) (lien ci-dessous)

Téléchargez la collection de bibliothèques d'exécution requises pour l'installation de phpStudy

VC9 32 bits

VC9 32 bits

Bibliothèque d'exécution de l'environnement d'installation intégré VC9 32 bits phpstudy

Version complète de la boîte à outils du programmeur PHP

Version complète de la boîte à outils du programmeur PHP

Programmer Toolbox v1.0 Environnement intégré PHP

VC11 32 bits

VC11 32 bits

Bibliothèque d'exécution de l'environnement d'installation intégré VC11 phpstudy 32 bits

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser