最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

HTML文檔引入JS模塊出現(xiàn)路徑問(wèn)題解決辦法

 更新時(shí)間:2024年03月25日 11:01:25   作者:白瑕  
這篇文章主要給大家介紹了關(guān)于HTML文檔引入JS模塊出現(xiàn)路徑問(wèn)題的解決辦法,在HTML中引入JavaScript模塊時(shí)如果遇到路徑問(wèn)題,通常是因?yàn)槟K的引用路徑不正確,本文將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下

前言

JS抽離, 引入three模塊.

LiveServer報(bào)錯(cuò):

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

事實(shí)上我已經(jīng)數(shù)不清這是第多少次遇到這種問(wèn)題了, 用HTML文檔寫一些庫(kù)的案例, 然后各種引入報(bào)錯(cuò), 找不到包之類.
只是這次的問(wèn)題解決讓我印象頗深, 也收獲頗豐.

一、錯(cuò)誤情況

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引入

沒(méi)有在html文檔做操作, 直接npm下包在js文件引入:

import gsap from 'gsap';

結(jié)果就是兩個(gè)都沒(méi)能成功引入.

二、解決辦法

路徑?jīng)]有寫錯(cuò), 只能說(shuō)打包之后路徑錯(cuò)誤找不到某個(gè)模塊了.

當(dāng)導(dǎo)入JavaScript模塊時(shí), import語(yǔ)句和import()運(yùn)算符都有一個(gè)"模塊標(biāo)識(shí)符", 其指示要導(dǎo)入的模塊. 瀏覽器根據(jù)此標(biāo)識(shí)符解析出絕對(duì)路徑, 才能成功導(dǎo)入.

導(dǎo)入映射(import map)是一個(gè) JSON 對(duì)象, 其允許開發(fā)者在導(dǎo)入 JavaScript 模塊時(shí), 控制瀏覽器如何解析模塊標(biāo)識(shí)符. 它提供了在 import 語(yǔ)句或 import() 運(yùn)算符中用作模塊標(biāo)識(shí)符的文本, 其會(huì)在解析標(biāo)識(shí)符時(shí)與要替換的文本之間建立映射.

在HTML文件增加以下來(lái)協(xié)助瀏覽器正確解析模塊標(biāo)識(shí)符, 這段代碼可以在three.js源碼的example任意一個(gè)案例中找到.
第一個(gè)映射修正three模塊的路徑, 第二個(gè)修正OrbitControls等附加模塊的路徑.

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

three的引入問(wèn)題在于路徑錯(cuò)誤, LiveServer最后是需要找到three.module.js, three的其他附加模塊需要找到j(luò)sm.
OrbitControls這種不在three.module.js內(nèi)的模塊導(dǎo)入, 可以在不配置importmap內(nèi)three/addons/的情況下:

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

實(shí)際上就是把importmap里的內(nèi)容直接寫到了js里.

但是對(duì)于three.module.js這種一次性導(dǎo)出多個(gè)類的文件就只能寫在importmap里了.

gsap引入失敗的問(wèn)題在于HTML文檔里是不能直接這樣:

import gsap from 'gsap';

引入使用的.

需要先配置importmap:

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

然后再:

import { gsap } from 'gsap';

路徑不固定, 只要引導(dǎo)到index.js即可.

或者不配置importmap, 直接js文件里這樣寫:

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

總結(jié)

到此這篇關(guān)于HTML文檔引入JS模塊出現(xiàn)路徑問(wèn)題解決辦法的文章就介紹到這了,更多相關(guān)HTML引入JS模塊路徑問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

高雄市| 泸定县| 抚远县| 渭南市| 建平县| 枞阳县| 宜阳县| 明星| 尼玛县| 丹江口市| 鄂托克前旗| 九龙城区| 娄底市| 桂阳县| 祁连县| 伊宁县| 兰考县| 九龙县| 青阳县| 洛阳市| 汾阳市| 霍邱县| 改则县| 库车县| 荣成市| 鹤峰县| 松溪县| 惠水县| 广汉市| 宝丰县| 伊吾县| 盐源县| 禹城市| 云安县| 明溪县| 长春市| 胶南市| 遂宁市| 西盟| 宜兴市| 囊谦县|