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

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

 更新時(shí)間:2024年03月25日 11:01:25   作者:白瑕  
這篇文章主要給大家介紹了關(guān)于HTML文檔引入JS模塊出現(xiàn)路徑問題的解決辦法,在HTML中引入JavaScript模塊時(shí)如果遇到路徑問題,通常是因?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ù)不清這是第多少次遇到這種問題了, 用HTML文檔寫一些庫的案例, 然后各種引入報(bào)錯(cuò), 找不到包之類.
只是這次的問題解決讓我印象頗深, 也收獲頗豐.

一、錯(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引入

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

import gsap from 'gsap';

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

二、解決辦法

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

當(dāng)導(dǎo)入JavaScript模塊時(shí), import語句和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 語句或 import() 運(yùn)算符中用作模塊標(biāo)識(shí)符的文本, 其會(huì)在解析標(biāo)識(shí)符時(shí)與要替換的文本之間建立映射.

在HTML文件增加以下來協(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的引入問題在于路徑錯(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引入失敗的問題在于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)路徑問題解決辦法的文章就介紹到這了,更多相關(guān)HTML引入JS模塊路徑問題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

纳雍县| 安多县| 水富县| 武穴市| 凤城市| 射洪县| 临朐县| 甘南县| 南京市| 哈巴河县| 延吉市| 凤台县| 调兵山市| 全南县| 庆阳市| 宝兴县| 潞城市| 平定县| 济南市| 平定县| 松原市| 寿宁县| 乐都县| 启东市| 内江市| 贵阳市| 平武县| 拜城县| 平泉县| 怀仁县| 河间市| 彰化市| 合肥市| 广水市| 阜南县| 徐州市| 龙胜| 夏河县| 化隆| 达日县| 赤壁市|