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

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

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

前言

JS抽離, 引入three模塊.

LiveServer報錯:

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

事實上我已經(jīng)數(shù)不清這是第多少次遇到這種問題了, 用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';

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

二、解決辦法

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

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

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

在HTML文件增加以下來協(xié)助瀏覽器正確解析模塊標識符, 這段代碼可以在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的其他附加模塊需要找到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';

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

但是對于three.module.js這種一次性導(dǎo)出多個類的文件就只能寫在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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

    本文主要介紹了JavaScript改變函數(shù)作用域的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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)生隨機數(shù)的幾個用法詳解

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

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

    使用js畫圖之餅圖

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

    Node.js開發(fā)指南中的簡單實例(mysql版)

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

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

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

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

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

    TypeScript中的 ! 和 ? 操作符

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

最新評論