我有两个javascript文件,它们都在同一个网页中使用,它们都使用第三个javascript文件的资源。
The服务器上的主JS文件Person6.js,at /FamilyTree/Person6.js:
import HTTP from "../jscripts6/js20/http.js";
import {iframe, actMouseOverHelp, openFrame, openSignon, debug, args,
getOffsetLeft, getOffsetTop, popupAlert, show,
showHelp, hideHelp, helpElt, keyDown,
eltMouseOver, eltMouseOut}
from "../jscripts6/util.js";
import {capitalize} from "../jscripts6/CommonForm.js";
import Cookie from "../jscripts6/Cookie.js";以及web服务器上的CommonForm.js,at /jscripts6/CommonForm.js,您可以看到它有一个由主脚本导入的方法。
import HTTP from "../jscripts6/js20/http.js";
import {getOffsetLeft, getOffsetTop, popupAlert,
helpDiv, eltMouseOver, eltMouseOut, displayHelp}
from "../jscripts6/util.js";当我对每个文件单独运行eslint时,除了在脚本中声明的未定义资源外,没有报告任何问题,这些脚本通过标记合并到应用程序中:
<script src="/jscripts/tinymce/js/tinymce/tinymce.js" type="application/javascript">
</script>
<script src="/FamilyTree/Person6.js" type="module">
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?v=3.43&callback=initializeMaps®ion=$GOOGLECC&key=$GOOGLEKEY" type="application/javascript"></script>我收到了一个错误:
Uncaught SyntaxError: import not found: default CommonForm.js:157:7.第157行是从“./jscripts6/ is 20/http.js”导入HTTP;如上面所示。
为什么这条语句在嵌入到CommonForm.js中时是语法错误,而在主文件Person6.js中嵌入时却不是语法错误?在这两个文件中,除了注释之外,在导入之前没有任何东西。显然,由于导入文件中的这个错误,主文件从未被执行。我只是在进口之后发布了一个警告,但它没有爆开。
我正在尝试将我的代码从ES3迁移到ES6。如何修复此错误?
发布于 2021-03-16 04:29:44
import HTTP from "../jscripts6/js20/http.js";等于
import { default as HTTP } from "../jscripts6/js20/http.js";还有你的错误
import not found: default是说http.js没有default导出。在你发布的片段中,情况确实如此。
export var HTTP;
if (HTTP && (typeof HTTP != "object" || HTTP.NAME))
throw new Error("Namespace 'HTTP' already exists"); // Create our namespace, and specify some meta-information
window.HTTP = HTTP = {};没有默认的导出,而是有一个HTTP导出,如果您的代码要按原样工作,则需要这样做。
import { HTTP as HTTP } from "../jscripts6/js20/http.js";
// or shortened
import { HTTP } from "../jscripts6/js20/http.js";值得注意的是,
if (HTTP && (typeof HTTP != "object" || HTTP.NAME)) 在这个上下文中,不会对true进行计算,也不会抛出,因为您没有在export var HTTP;声明中提供一个值,从而显式地将其声明为undefined。
https://stackoverflow.com/questions/66646969
复制相似问题