關(guān)于JavaScript使用export和import的兩個(gè)報(bào)錯(cuò)解決
前言
作為一個(gè)前端小白,最近在學(xué)習(xí)使用JavaScript中的export和import,遇到了兩個(gè)報(bào)錯(cuò),特地記錄下來。
報(bào)錯(cuò):Uncaught SyntaxError: Cannot use import statement outside a module

意思是說無法在module以外使用import,在網(wǎng)上進(jìn)行查閱之后才了解到,這是由于script標(biāo)簽?zāi)J(rèn)是使用JavaScript語言,使用ES6的語法會(huì)發(fā)生解析錯(cuò)誤,需要在script標(biāo)簽中加入type=“module”,具體如下:
<script type="module"> import Rotation from '../js/ui.js' Rotation(); </script>
這樣就不會(huì)報(bào)錯(cuò)了。
報(bào)錯(cuò):Uncaught SyntaxError: The requested module ‘…/js/ui.js’ does not provide an export named ‘default’
在解決上面的第一個(gè)報(bào)錯(cuò)之后,控制臺(tái)又拋出了第二個(gè)錯(cuò)誤:

是說我的目標(biāo)JS文件中沒有default導(dǎo)出,而我的JS文件中是這樣的:
function Rotation() {
let lbt = document.querySelectorAll('.zh-lbt');
for (let i = 0; i < lbt.length; i++) {
let lbtNum = Number(lbt[i].getAttribute('num'))||1
console.log(lbtNum);
}
}
export {Rotation};
按理來說這樣寫是沒有問題的,export default和export只是暴露目標(biāo)數(shù)有區(qū)別,不應(yīng)該有語法報(bào)錯(cuò),所以我想可能是引入時(shí)出現(xiàn)了問題,于是我將
<script type="module"> import Rotation from '../js/ui.js' Rotation(); </script>
加了一個(gè)大括號(hào){},修改為了
<script type="module">
import {Rotation} from '../js/ui.js'
Rotation();
</script>
發(fā)現(xiàn)果然控制臺(tái)沒有報(bào)錯(cuò),并出現(xiàn)了結(jié)果

這個(gè)問題我認(rèn)為其原因是export語法可以向外暴露多個(gè)目標(biāo),所以在引入時(shí)需要通過“{}”以對(duì)象經(jīng)行引入,export default只能向外暴露一個(gè),所以可以不用寫{}。
然而事實(shí)是我想錯(cuò)了。
在改為export default后,才發(fā)現(xiàn)export default在引入時(shí),不能加{},否則會(huì)報(bào)錯(cuò)。
export default{
Rotation:function () {
let lbt = document.querySelectorAll('.zh-lbt');
for (let i = 0; i < lbt.length; i++) {
let lbtNum = Number(lbt[i].getAttribute('num'))||1
console.log(lbtNum);
}
}
}
<script type="module">
import {Rotation} from '../js/ui.js'
Rotation.Rotation();
</script>
此時(shí)控制臺(tái)會(huì)報(bào)錯(cuò)

同理此時(shí)只要去掉“{}”,就不會(huì)報(bào)錯(cuò)了,并能正確打印上面的結(jié)果。
總結(jié)
到此這篇關(guān)于JavaScript使用export和import的兩個(gè)報(bào)錯(cuò)解決的文章就介紹到這了,更多相關(guān)JS使用export和import報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue報(bào)錯(cuò)之exports is not defined問題的解決
- 解決React報(bào)錯(cuò)Unexpected default export of anonymous function
- 關(guān)于IDEA中的.VUE文件報(bào)錯(cuò) Export declarations are not supported by current JavaScript version
- 解決使用export_graphviz可視化樹報(bào)錯(cuò)的問題
- 探索export導(dǎo)出一個(gè)字面量會(huì)報(bào)錯(cuò)export?default不會(huì)報(bào)錯(cuò)
相關(guān)文章
微信小程序 子級(jí)頁面返回父級(jí)并把子級(jí)參數(shù)帶回父級(jí)實(shí)現(xiàn)方法
這篇文章主要介紹了微信小程序 子級(jí)頁面返回父級(jí)并把子級(jí)參數(shù)帶回父級(jí)實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
JS從數(shù)組中隨機(jī)取出幾個(gè)數(shù)組元素的方法
JS如何從一個(gè)數(shù)組中隨機(jī)取出一個(gè)元素或者幾個(gè)元素呢?其實(shí)方法很簡(jiǎn)單,下面小編給大家分享了JS隨機(jī)取出幾個(gè)數(shù)組元素的方法,非常不錯(cuò),需要的朋友參考下2016-08-08
javascript顯示用戶停留時(shí)間的簡(jiǎn)單實(shí)例
這篇文章介紹了javascript顯示用戶停留時(shí)間的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-08-08
ES6中的Promise.all()和Promise.race()函數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了ES6的Promise.all()和Promise.race()函數(shù),結(jié)合實(shí)例代碼介紹了ES6 Promise.race和Promise.all方法使用,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
JS倒計(jì)時(shí)兩種實(shí)現(xiàn)方式代碼實(shí)例
這篇文章主要介紹了JS倒計(jì)時(shí)兩種實(shí)現(xiàn)方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
淺談js對(duì)象的創(chuàng)建和對(duì)6種繼承模式的理解和遐想
下面小編就為大家?guī)硪黄獪\談js對(duì)象的創(chuàng)建和對(duì)6種繼承模式的理解和遐想。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10
nullJavascript中創(chuàng)建對(duì)象的五種方法實(shí)例
今天上午,非常郁悶,有很多簡(jiǎn)單基礎(chǔ)的問題搞得我有些迷茫,哎,代碼幾天不寫就忘。目前又不當(dāng)COO,還是得用心記代碼哦!2013-05-05

