欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • 如何確保JavaScript的執(zhí)行順序 之實(shí)戰(zhàn)篇

    如何確保JavaScript的執(zhí)行順序 之實(shí)戰(zhàn)篇

    我曾在文章《如何在多個(gè)頁面使用同一個(gè)HTML片段 - 續(xù)》的最后提到JavaScript順序執(zhí)行的特性。雖然現(xiàn)代瀏覽器可以并行的下載JavaScript(部分瀏覽器),但考慮到JavaScript的依賴關(guān)系,他們的執(zhí)行依然是按照引入順序進(jìn)行的。
    2011-03-03
  • Openlayers學(xué)習(xí)之加載鷹眼控件

    Openlayers學(xué)習(xí)之加載鷹眼控件

    這篇文章主要介紹了Openlayers學(xué)習(xí)之加載鷹眼控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JavaScript改變函數(shù)作用域的方法示例

    JavaScript改變函數(shù)作用域的方法示例

    本文主要介紹了JavaScript改變函數(shù)作用域的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 關(guān)于Bootstrap彈出框無法調(diào)用問題的解決辦法

    關(guān)于Bootstrap彈出框無法調(diào)用問題的解決辦法

    這篇文章主要介紹了關(guān)于Bootstrap彈出框無法調(diào)用問題的解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • JS產(chǎn)生隨機(jī)數(shù)的幾個(gè)用法詳解

    JS產(chǎn)生隨機(jī)數(shù)的幾個(gè)用法詳解

    下面小編就為大家?guī)硪黄狫S產(chǎn)生隨機(jī)數(shù)的幾個(gè)用法詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 使用js畫圖之餅圖

    使用js畫圖之餅圖

    這篇文章主要介紹了使用js繪制幾何圖形系列教程的繪制餅圖篇,需要的朋友可以參考下
    2015-01-01
  • Node.js開發(fā)指南中的簡(jiǎn)單實(shí)例(mysql版)

    Node.js開發(fā)指南中的簡(jiǎn)單實(shí)例(mysql版)

    工作原因需要用到nodejs,于是找到了《node.js開發(fā)指南》這本書來看看,作者BYVoid 為清華大學(xué)計(jì)算機(jī)系的高材生,年紀(jì)竟比我還小一兩歲,中華地廣物博真是人才輩出,佩服
    2013-09-09
  • JavaScript返回網(wǎng)頁中超鏈接數(shù)量的方法

    JavaScript返回網(wǎng)頁中超鏈接數(shù)量的方法

    這篇文章主要介紹了JavaScript返回網(wǎng)頁中超鏈接數(shù)量的方法,使用javascript中的document.links實(shí)現(xiàn)這一功能,需要的朋友可以參考下
    2015-04-04
  • javascript使用正則獲取url上的某個(gè)參數(shù)

    javascript使用正則獲取url上的某個(gè)參數(shù)

    使用indexOf取得?之后的參數(shù),以&使split進(jìn)行分割成數(shù)組,下面展示了一個(gè)從url上獲取名為MenuCode參數(shù)的過程
    2014-09-09
  • TypeScript中的 ! 和 ? 操作符

    TypeScript中的 ! 和 ? 操作符

    在 TypeScript 中,!?和???是兩個(gè)非常重要且常用的操作符,分別用于非空斷言和可選鏈操作,下面就來具體介紹一下如何使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02

最新評(píng)論