我在网上读到的大部分内容要么已经过时,要么不够精确。 我会尝试揭露我的问题。 我正在编写一个由 2 个文件组成的 d3 项目,其结构如下
main.html:
<!DOCTYPE html>
<html>
<head>
<script src="./d3/d3.js"></script>
<script src="./KMeans.js"></script>
</head>
<body>
<script type="text/javascript">
<!--Some code -->
var kmeans = new KMeans();
</script>
</body>
</html>
KMeans.js:
class KMeans {
//class related stuff
}
一切都工作得非常好,直到我决定在一个新文件中添加一个名为“Clustering”的新类以由 KMeans 继承。代码变成这样:
main.html:
<!DOCTYPE html>
<html>
<head>
<script src="./d3/d3.js"></script>
<script type="module" src="./KMeans.js"></script>
</head>
<body>
<script type="text/javascript">
<!--Some code -->
var kmeans = new KMeans();
</script>
</body>
</html>
KMeans.js:
import {Clustering} from './Clustering.js';
export class KMeans extends Clustering {
//class related stuff
}
聚类.js:
export class Clustering {
}
我不断收到此错误:
ReferenceError: KMeans is not defined
仅供引用,我没有使用 Babel 或任何转译器。
对于我的一生,我无法理解有关 JS 中的模块管理的事情。有人可以帮我弄清楚出了什么问题吗?
最佳答案
将脚本定义为模块后,其中定义的变量将不再公开。所以,你有两个选择。
选项 1
您可以将 Clustering 和 KMeans 设为常规非模块文件,并删除所有 import
和 export
语句。这将解决您的问题。
选项 2
您可以将最终的脚本标记移动到其自己的文件中,并将其本身作为一个模块(也许您可以保持内联并仍然将其作为一个模块,但我对此不确定),并记住导入 KMeans
如果你想使用它。
关于javascript - Javascript 导入的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55930350/