当前位置:首页 » 《休闲阅读》 » 正文

Vue编译报错 “Failed to resolve import “@/router“ from “src\main.js“. Does the file exist ? “ 问题修复

12 人参与  2024年09月15日 16:03  分类 : 《休闲阅读》  评论

点击全文阅读


前言

通过解决一个Vue编译报错,我们将学习构建工具中关于解析(resolve)别名(alias)的选项

背景

前端项目使用@简化import文件路径,编译打包时遇到报错 "Failed to resolve import “@/router” from “src\main.js”. Does the file exist ? "
在这里插入图片描述

解决方案

检查构建工具的配置文件 vite.config.js ,确保别名 @ 映射到src目录

alias:

resolve.alias
类型:Record<string, string> | Array<{ find: string | RegExp, replacement: string }>
将会被传递到 @rollup/plugin-alias 作为 entries 的选项。也可以是一个对象,或一个 { find, replacement } 的数组。

当使用文件系统路径的别名时,请始终使用绝对路径。相对路径的别名值会原封不动地被使用,因此无法被正常解析。

通过定义别名,可以在导入语句中使用简短的别名代替长路径,提高代码可读性和可维护性

// vite.config.jsimport { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'export default defineConfig(({ command, mode }) => {return {resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}}}})

了解几个前置知识:

URL

new URL(input[,base])

该方法新建一个URL实例,便于对URL进行解析

参数:
input:string类型,input URL,要解析的绝对或相对URL
base:string类型,base URL,当input是绝对URL,base将被忽略。当input是相对URL,则解析base。如果base不是字符串,则首先将其转换为字符串。

fileURLToPath

url.fileURLToPath( url )

参数:
该函数接受单个参数:要解析的URL对象或字符串

返回值:返回一个经完全解析的符合特定平台的文件路径的字符串。

import.meta.url

import.meta.url 表示浏览器中模块的绝对URL或Node.js中的绝对路径(前缀为file:// )
import.meta 是给JavaScript模块暴露特定上下文的元数据属性的对象,它包含了这个模块的信息。import.meta 对象是由ECMAScript实现的,它带有一个null的原型对象。这个对象可以扩展,并且它的属性都是可写,可配置和可枚举的。

示例
这里有一个 my-module.js 模块

<script type="module" src="my-module.mjs"></script>

可以通过 import.meta 对象获取这个模块的元数据信息

console.log(import.meta); // { url: "file:///home/user/my-module.mjs" }

它返回一个带有url属性的对象,指明该模块的基本URL。也可以是外部脚本的URL,还可以是内联脚本所属文档的URL


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/160418.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1