我有一个简单的 javascript 模块,其中包含我的浏览器端 javascript 和节点服务器 ES6 模块通用的类。代码都是同源的,所以没有加载错误,但是从 ES6 模块导出的实体在浏览器脚本中都不可用。忽略重用并仅考虑浏览器端,这是可行的:
latlong.js非模块
function LatLon(lat,lon) {
this.lat = lat;
this.lon = lon;
}
测试.html
<body>
<script src="latlong.js"></script>
<script>
let test = new LatLon(1,2)
</script>
</body>
但这不使用模块,因此不能与节点服务器代码共享,所以我希望以下工作但它失败
了 latlong.js模块,该模块可以在服务器端节点 js 代码中正常导入并且可以工作
export class LatLon {
constructor(lat, lon) {
this.lat = lat;
this.lon = lon;
}
}
带有模块导入的test.html
<body>
<script type="module" src="latlong.js"></script>
<script>
let test = new LatLon(1,2) <=Uncaught ReferenceError: LatLon is not defined
</script>
</body>
关于如何从模块导出类/原型或声明原型类还有许多其他变体,但对我来说都导致相同的错误。
这是在本地网络服务器中运行的,我已经验证了在两种情况下返回的用于加载 latlong.js 的标头具有内容类型application/javascript。由于这是一个 ampps Web 服务器,我可以将 js 和 mjs 请求的 mime 类型更改为 text/javascript 以更符合要求,但这对报告的错误没有影响。
在 HTML 文档中包含模块很常见,那么我做错了什么?