Table des matières
Description du problème
造成这个问题的原因
解决方案
修改静态资源根路径
使用绝对路径引用图片
将图片文件放置在公共目录下
rrreee
Modifier le chemin racine des ressources statiques
Utiliser des chemins absolus pour référencer des images
Placez les fichiers image dans le répertoire public
Maison interface Web Questions et réponses frontales Le chemin de l'image est erroné après l'empaquetage de vue-cli3

Le chemin de l'image est erroné après l'empaquetage de vue-cli3

May 23, 2023 pm 06:47 PM

Avec le développement continu de la technologie front-end, divers frameworks et outils émergent également. Dans cette ère de grandes vagues, Vue.js est sans aucun doute une existence incontournable. Cependant, à mesure que Vue.js devient de plus en plus populaire, nous rencontrerons certains problèmes. Cet article présentera le problème des chemins d'image incorrects lors de l'utilisation de vue-cli3 pour empaqueter des projets et fournira quelques solutions.

Description du problème

Lors de l'utilisation de vue-cli3 pour le développement de projets, nous pouvons généralement utiliser la balise img pour introduire des images. Par exemple : img 标签来引入图片。例如:

<img src="./assets/img/logo.png" alt="logo" />
Copier après la connexion

这里假设 logo.png 图片位于项目的 assets 目录下。在运行 npm run serve 命令时,该图片可以正确显示。但是,当我们运行 npm run build 命令进行打包后,我们访问打包后的页面却发现图片无法正常显示,通过浏览器的开发者工具,我们可以发现其实图片加载失败了,并且控制台给出了如下错误信息:

http://your-domain.com/img/logo.4aebf758.png 404 (Not Found)
Copier après la connexion

这里的 http://your-domain.com 是指打包后项目的根目录路径。

造成这个问题的原因

我们知道,Vue.js 基于组件化的开发模式,一般情况下,每个组件都是一个单独的文件,包括 HTML 模板、CSS 样式、JavaScript 代码等。在 Vue.js 的开发过程中,我们通常会使用 webpack 打包工具来进行构建打包。由于 webpack 文件打包的机制,它会将每个组件所需的所有资源打包到相应的 JavaScript 文件中,而浏览器仅能通过 HTTP 请求获取到静态资源,因此 webpack 打包时会将资源文件(包括图片)的路径转换为 HTTP 请求路径。

换句话说,当我们使用相对路径来引用资源文件时,在项目运行时该图片会在 http://localhost:8080 根目录下搜索,而在打包时,图片的路径已经被 webpack 打包为新的路径,并放在了根目录下的 img 目录下。因此,我们在使用 webpack 打包后的文件时,需要针对路径进行修改。

解决方案

修改静态资源根路径

我们可以通过修改 vue.config.jspublicPath 字段的值来替换根路径,从而解决路径错误的问题。

首先,在项目根目录中新建 vue.config.js 文件,并输入如下代码:

module.exports = {
  publicPath: './'
}
Copier après la connexion

这里的 publicPath 实际上就是设置了打包后的静态资源存放路径,上述代码表示静态资源和 index.html 存放在同一个目录下。

使用绝对路径引用图片

除了通过修改 publicPath 来解决问题,我们还可以直接使用绝对路径来引用图片,这样就避免了由相对路径带来的问题。例如:

<img src="/img/logo.4aebf758.png" alt="logo" />
Copier après la connexion

这里的 / 表示项目根路径,通过此方式引用的图片不会受相对路径的影响。

将图片文件放置在公共目录下

我们也可以将图片文件放置在 /publicrrreee

Cela suppose que l'image logo.png se trouve dans le répertoire assets du projet. L'image s'affiche correctement lors de l'exécution de la commande npm run serve. Cependant, lorsque nous exécutons la commande npm run build pour l'empaquetage, nous visitons la page empaquetée et constatons que l'image ne peut pas être affichée normalement. Grâce aux outils de développement du navigateur, nous pouvons constater que le chargement de l'image échoue. Et la console a donné le message d'erreur suivant :

rrreee

http://your-domain.com fait ici référence au chemin du répertoire racine du projet packagé.

La raison de ce problème🎜🎜Nous savons que Vue.js est basé sur le modèle de développement de composants. Généralement, chaque composant est un fichier distinct, comprenant des modèles HTML, des styles CSS, des codes JavaScript, etc. Pendant le processus de développement de Vue.js, nous utilisons généralement l'outil d'empaquetage webpack pour créer et empaqueter. En raison du mécanisme d'empaquetage des fichiers Webpack, il regroupera toutes les ressources requises par chaque composant dans le fichier JavaScript correspondant, et le navigateur ne peut obtenir des ressources statiques que via des requêtes HTTP, donc Webpack empaquetera les fichiers de ressources (y compris les images) ) le chemin est converti en chemin de requête HTTP. 🎜🎜En d'autres termes, lorsque nous utilisons des chemins relatifs pour référencer des fichiers de ressources, l'image sera recherchée dans le répertoire racine de http://localhost:8080 lorsque le projet est en cours d'exécution et lors du packaging, l'image Le chemin a été empaqueté en tant que nouveau chemin par webpack et placé dans le répertoire img du répertoire racine. Par conséquent, lorsque nous utilisons des fichiers packagés Webpack, nous devons modifier le chemin. 🎜🎜Solution🎜

Modifier le chemin racine des ressources statiques

🎜Nous pouvons remplacer le chemin racine en modifiant la valeur du champ publicPath dans vue.config.js , résolvant ainsi le problème des mauvais chemins. 🎜🎜Tout d'abord, créez un nouveau fichier <code>vue.config.js dans le répertoire racine du projet et entrez le code suivant : 🎜rrreee🎜Le publicPath ici définit en fait la ressource statique empaquetée chemin de stockage. Le code ci-dessus indique que les ressources statiques et index.html sont stockés dans le même répertoire. 🎜

Utiliser des chemins absolus pour référencer des images

🎜En plus de résoudre le problème en modifiant publicPath, nous pouvons également utiliser directement des chemins absolus pour référencer des images, évitant ainsi les problèmes causés par les chemins absolus pour référencer des images. question des chemins. Par exemple : 🎜rrreee🎜/ représente ici le chemin racine du projet, et les images référencées de cette manière ne seront pas affectées par les chemins relatifs. 🎜

Placez les fichiers image dans le répertoire public

🎜Nous pouvons également placer les fichiers image dans le répertoire /public Les fichiers de ce répertoire ne seront pas empaquetés par webpack, mais. Copiez directement dans le répertoire packagé. De cette façon, nous pouvons référencer directement ces images en utilisant des chemins relatifs. 🎜🎜Résumé🎜🎜Que ce soit en modifiant le chemin ou en utilisant un chemin absolu pour référencer l'image, la solution est relativement simple. Dans le développement réel, afin de réduire le problème des erreurs de chemin, nous pouvons développer de bonnes habitudes pendant le développement et essayer d'utiliser des chemins absolus ou de placer des images dans des répertoires publics. Cela facilite non seulement le débogage et la maintenance, mais réduit également les erreurs de chemin après l'empaquetage. J'espère que cet article vous sera utile. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le rôle de React dans HTML: Amélioration de l'expérience utilisateur Le rôle de React dans HTML: Amélioration de l'expérience utilisateur Apr 09, 2025 am 12:11 AM

React combine JSX et HTML pour améliorer l'expérience utilisateur. 1) JSX incorpore du HTML pour rendre le développement plus intuitif. 2) Le mécanisme DOM virtuel optimise les performances et réduit les opérations DOM. 3) Interface utilisateur de gestion basée sur les composants pour améliorer la maintenabilité. 4) La gestion des états et le traitement des événements améliorent l'interactivité.

React Composants: Création d'éléments réutilisables en HTML React Composants: Création d'éléments réutilisables en HTML Apr 08, 2025 pm 05:53 PM

Les composants React peuvent être définis par des fonctions ou des classes, encapsulant la logique de l'interface utilisateur et acceptant les données d'entrée via des accessoires. 1) Définissez les composants: utilisez des fonctions ou des classes pour retourner les éléments de réact. 2) Rendre le composant: React Cappel Render Method ou Exécute le composant de fonction. 3) Composants de multiplexage: passer des données à travers des accessoires pour construire une interface utilisateur complexe. L'approche du cycle de vie des composants permet d'exécuter la logique à différentes étapes, améliorant l'efficacité de développement et la maintenabilité du code.

Quelles sont les limites du système de réactivité de Vue 2 en ce qui concerne les changements de tableau et d'objets? Quelles sont les limites du système de réactivité de Vue 2 en ce qui concerne les changements de tableau et d'objets? Mar 25, 2025 pm 02:07 PM

Le système de réactivité de Vue 2 lutte avec le réglage de l'index de tableau direct, la modification de la longueur et l'ajout / suppression de la propriété de l'objet. Les développeurs peuvent utiliser les méthodes de mutation de Vue et Vue.set () pour assurer la réactivité.

React and the frontend: construire des expériences interactives React and the frontend: construire des expériences interactives Apr 11, 2025 am 12:02 AM

React est l'outil préféré pour construire des expériences frontales interactives. 1) Réagir simplifie le développement de l'interface utilisateur par la composontisation et le DOM virtuel. 2) Les composants sont divisés en composants de fonction et composants de classe. Les composants de fonction sont plus simples et les composants de la classe fournissent plus de méthodes de cycle de vie. 3) Le principe de travail de React repose sur le DOM virtuel et l'algorithme de réconciliation pour améliorer les performances. 4) La gestion de l'État utilise USESTATE ou This. State, et des méthodes de cycle de vie telles que ComponentDidMount sont utilisées pour une logique spécifique. 5) L'utilisation de base comprend la création de composants et la gestion de l'état, et l'utilisation avancée implique des crochets personnalisés et une optimisation des performances. 6) Les erreurs courantes incluent les mises à jour de statut et les problèmes de performance inappropriés, les compétences de débogage comprennent l'utilisation de Reactdevtools et d'excellents

Quels sont les avantages de l'utilisation de TypeScript avec React? Quels sont les avantages de l'utilisation de TypeScript avec React? Mar 27, 2025 pm 05:43 PM

TypeScript améliore le développement de React en offrant la sécurité du type, en améliorant la qualité du code et en offrant un meilleur support IDE, réduisant ainsi les erreurs et améliorant la maintenabilité.

Comment pouvez-vous utiliser UserReducer pour une gestion complexe de l'état? Comment pouvez-vous utiliser UserReducer pour une gestion complexe de l'état? Mar 26, 2025 pm 06:29 PM

L'article explique l'utilisation d'un userReducer pour une gestion complexe de l'état dans React, détaillant ses avantages sur UseState et comment l'intégrer avec l'utilisation d'effet pour les effets secondaires.

Que sont les composants fonctionnels dans vue.js? Quand sont-ils utiles? Que sont les composants fonctionnels dans vue.js? Quand sont-ils utiles? Mar 25, 2025 pm 01:54 PM

Les composants fonctionnels de Vue.js sont apatrides, légers et manquent de crochets de cycle de vie, idéaux pour rendre les données pures et optimiser les performances. Ils diffèrent des composants avec état en n'ayant pas d'état ou de réactivité, en utilisant directement les fonctions de rendu, un

Comment vous assurez-vous que vos composants React sont accessibles? Quels outils pouvez-vous utiliser? Comment vous assurez-vous que vos composants React sont accessibles? Quels outils pouvez-vous utiliser? Mar 27, 2025 pm 05:41 PM

L'article traite des stratégies et des outils pour garantir que les composants React sont accessibles, en se concentrant sur le HTML sémantique, les attributs Aria, la navigation par clavier et le contraste des couleurs. Il recommande d'utiliser des outils comme Eslint-Plugin-JSX-A11Y et Axe-Core pour Testi

See all articles