You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Vite项目到Hostinger时CDN及资源导入错误求助

问题解决指南

一、修复404错误

1. 替换版本占位符

你importmap里的<version>是占位符,必须替换成实际版本号,比如Three.js用0.158.0,GSAP用和你CDN引入一致的3.11.4。

2. 修正GSAP的CDN路径

unpkg.com/browse/是网页浏览路径,不是可直接加载的资源路径,要去掉browse前缀,直接使用资源文件的URL。

3. 补充@theatre/core的importmap配置

代码里导入了@theatre/core.js,但importmap未配置对应路径,需要补充进去,同时代码里的导入要去掉.js后缀。

修正后的importmap示例:

<script type="importmap">
  {
    "imports": {
      "three": "https://unpkg.com/three@0.158.0/build/three.module.js",
      "three/addons/": "https://unpkg.com/three@0.158.0/examples/jsm/",
      "gsap": "https://unpkg.com/gsap@3.11.4/src/gsap-core.js",
      "gsap/": "https://unpkg.com/gsap@3.11.4/src/",
      "@theatre/core": "https://unpkg.com/@theatre/core@0.7.0/dist/index.esm.js"
    }
  }
</script>

4. 移除重复的GSAP全局脚本

你同时用了CDN引入全局GSAP脚本和importmap导入ES模块,会造成冲突,建议删掉前面4个GSAP的<script>标签,只保留importmap的模块导入方式。

二、修复MIME类型错误

直接import图片、JSON文件时,浏览器会把它们当作JavaScript模块处理,导致MIME类型不匹配,需改用正确的加载方式:

1. 加载JSON文件

不要用import,改用fetch异步加载:

// 替换原import语句
let state;
fetch("https://gramophone-frezy.s3.eu-central-1.amazonaws.com/bestR.json")
  .then(res => res.json())
  .then(data => {
    state = data;
    // 在这里执行依赖state的逻辑
  });

2. 加载图片资源

基于你使用Three.js的场景,用TextureLoader加载图片,而非import:

// 替换原图片import语句
const textureLoader = new THREE.TextureLoader();
const soundTexture = textureLoader.load("sound.png");
const sound2Texture = textureLoader.load("sound2.png");

如果是普通DOM图片,用new Image()创建并设置src即可。

三、额外注意事项

  • Hostinger服务器默认已配置正确的MIME类型,无需额外调整,核心问题还是资源导入方式不符合浏览器原生模块规范。
  • Vite本地开发会自动转译非JS资源的导入,但部署到CDN时没有Vite的转译支持,必须使用浏览器原生支持的加载方式。

内容的提问来源于stack exchange,提问作者noone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:21:35