HTML文档引入JS模块出现路径问题

news/2024/10/28 0:21:45/

文章目录

  • 前言
  • 一、错误情况
    • 1.three引入
    • 2.gsap引入
  • 二、解决办法
  • 总结


前言

JS抽离, 引入three模块.
LiveServer报错:

Uncaught TypeError: Failed to resolve module specifier "three".
Relative references must start with either "/", "./", or "../".

事实上我已经数不清这是第多少次遇到这种问题了, 用HTML文档写一些库的案例, 然后各种引入报错, 找不到包之类.
只是这次的问题解决让我印象颇深, 也收获颇丰.


一、错误情况

1.three引入

html:

<script src="./js/main.js" type="module"></script>

JavaScript:

import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';

2.gsap引入

没有在html文档做操作, 直接npm下包在js文件引入:

import gsap from 'gsap';

结果就是两个都没能成功引入.


二、解决办法

路径没有写错, 只能说打包之后路径错误找不到某个模块了.

当导入JavaScript模块时, import语句和import()运算符都有一个"模块标识符", 其指示要导入的模块. 浏览器根据此标识符解析出绝对路径, 才能成功导入.

导入映射(import map)是一个 JSON 对象, 其允许开发者在导入 JavaScript 模块时, 控制浏览器如何解析模块标识符. 它提供了在 import 语句或 import() 运算符中用作模块标识符的文本, 其会在解析标识符时与要替换的文本之间建立映射.

在HTML文件增加以下来协助浏览器正确解析模块标识符, 这段代码可以在three.js源码的example任意一个案例中找到.
第一个映射修正three模块的路径, 第二个修正OrbitControls等附加模块的路径.

<script type="importmap">{"imports": {"three": "../../node_modules/three/build/three.module.js","three/addons/": "../../node_modules/three/examples/jsm/"}}
</script>

three的引入问题在于路径错误, LiveServer最后是需要找到three.module.js, three的其他附加模块需要找到jsm.
OrbitControls这种不在three.module.js内的模块导入, 可以在不配置importmap内three/addons/的情况下:

import { OrbitControls } from '../../node_modules/three/examples/jsm/controls/OrbitControls.js';

实际上就是把importmap里的内容直接写到了js里.

但是对于three.module.js这种一次性导出多个类的文件就只能写在importmap里了.


gsap引入失败的问题在于HTML文档里是不能直接这样:

import gsap from 'gsap';

引入使用的.

需要先配置importmap:

<script type="importmap">{"imports": {"gsap": "../../node_modules/gsap/index.js"}}
</script>

然后再:

import { gsap } from 'gsap';

路径不固定, 只要引导到index.js即可.

或者不配置importmap, 直接js文件里这样写:

import { gsap } from '../../node_modules/gsap/index.js';

总结


http://www.ppmy.cn/news/351312.html

相关文章

搜搜关键词排名查询 - 站长工具

搜搜关键词排名查询 经常去站长工具那里&#xff0c;不过只提供了百度关键词排名功能&#xff0c;没有提供搜搜的关键词排名。 只好自己开发一个&#xff0c;方便自己&#xff0c;也方便他人 功能还在继续完善中&#xff0c;希望有识之士多提建议。 http://so.assoft.net.cn…

批量备案域名查询工具-批量备案域名扫描查询

备案域名查询&#xff0c;怎么批量查询域名是否备案。备案域名有什么用&#xff1f;做SEO的人员都知道&#xff0c;备案域名已经成为SEO优化的基础了。今天给大家分享一款批量查询域名的工具。支持批量备案域名查询&#xff0c;支持是否被强制查询、是否被拦截、还支持批量管理…

qt listwidget 关键字颜色_seo关键字优化工具如何收费

如何收费sj67745eo关键字优化工具&#xff0c;企业经常采用SEO优化&#xff0c;以获得更好的排名和更好的流量自己的网站。搜索引擎优化有哪些方法&#xff1f;或者什么更有效&#xff1f; 任何一个站点&#xff0c;都是无法脱离内容&#xff0c;它是网站建设的基石&#xff0c…

常用SEO查询工具

SEO工作者经常需要一些SEO工具的辅助&#xff0c;比如网站收录查询、PR查询等等&#xff0c;以便节省自己的时间&#xff0c;让SEO变得更加轻松。那么&#xff0c;常用的SEO工具都有哪些呢&#xff1f;今天就介绍一些常用的SEO工具网址&#xff0c;并将其进行分类&#xff0c;希…

关键字排名工具|如何看关键字在搜索引擎的排名

关键字排名工具|如何看关键字在搜索引擎的排名 http://files.cnblogs.com/bestsaler/flash_website_tool.rar 转载于:https://www.cnblogs.com/bestsaler/archive/2010/11/20/1882518.html

搜索引擎优化的关键字工具

关键字的选择会是决定搜索引擎优化项目的成败。选择正确的关键词可以是困难的&#xff0c;因为为了获得尽可能从SEO中受益&#xff0c;您需要找到之间的平衡普及&#xff0c;相关性和竞争。 选择一个热门行业的关键词长期看起来是比较自然&#xff0c;但如果成千上万的其他网站…

未找到要求的 from 关键字_临沂网站关键字优化工具

临沂网站关j67745键字优化工具&#xff0c;企业经常采用SEO优化&#xff0c;以获得更好的排名和更好的流量自己的网站。搜索引擎优化有哪些方法&#xff1f;或者什么更有效&#xff1f; 就是很多这样的现象出现&#xff0c;所以导致很多都说seo优化越来越难做了.为了解决这样的…

批量查排名的工具有哪些?网站关键词可以优化?

想来很多做SEO的小伙伴都在为网站关键词排名和优化感到苦恼&#xff0c;苦于没有合适的工具可以查询关键词排名工具&#xff0c;苦于不能挖掘出更多优质的行业关键词&#xff0c;今天一起来看看有哪些工具可以批量查询关键词排名吧! 一、 百度关键字排名批量查询工具 特点&am…