星星之火-Vite2+Vue3打包时JS文件无法完成打包

本文最后更新于:April 30, 2022 am

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。

目录

描述

src/views/ 下有一个JS文件,此文件是一个用于页面的特效文件,在根目录的 index.html 中有引用,如:

1
<script src="./src/views/sakura.js"></script>

在本地也是可以有正常效果的。而在打包时却报了一个问题:(当时并没有发现这个报错问题)

1
<script src="/src/Sakura.js"> in "/index.html" can't be bundled without type="module" attribute

部署上线后,页面并没有效果。

解决办法

在尝试了把JS文件放在各个地方均失败后,在官网找到了答案。 Vite官方文档

将其放在 public 文件中,但是引用时是不用写 public 这个文件名的。如下:(JS文件放在了public文件下)

1
<script src="/Sakura.js"></script>

官方中也说到了这点:

你可以将该资源放在指定的 public 目录中,它应位于你的项目根目录。该目录中的资源在开发时能直接通过 / 根路径访问到,并且打包时会被完整复制到目标目录的根目录下。

目录默认是 <root>/public,但可以通过 publicDir 选项 来配置。

请注意:

  • 引入 public 中的资源永远应该使用根绝对路径 —— 举个例子,public/icon.png 应该在源码中被引用为 /icon.png
  • public 中的资源不应该被 JavaScript 文件引用。