Js:将文件转换为模块会产生"[function] is declared but its value is never read"错误



嗨,如果这是一个愚蠢的问题,很抱歉,但我在任何地方都找不到答案。

我有一个在画布上绘制的js文件,我刚刚从中删除了一个函数,因为我想在另一个js文件中使用它。然后,我将getPosition函数导入drawBalls.js文件,如下所示:

import {getPosition} from "../Useful_Scripts/divPosition.js";

这似乎还可以(因为它没有给我任何错误(。然而,就在下面,我有一个函数绘制,它开始时是这样的:

function draw(canvas){
const maxRadius = 10;
const minRadius = 5;
etc;

如果声明了错误"draw",但从未读取其值,则该方法不再有效。不过,如果我删除导入代码并将getPosition函数粘贴到drawBalls.js中,并删除type="模块";来自script标记。

我在我的html文件中有这个,我试图在画布上绘制:

<script type="module" src="../Scripts/Project_1/drawBalls.js"></script>
<script>
window.addEventListener('load', (event) => {
draw(canvas1);
});
</script>

有人能解释一下为什么一旦文件变成模块,它就不再工作了吗?

更新我已将html文件更改为

<script type="module" >
import {draw} from "../Scripts/Project_1/drawBalls.js"
window.addEventListener('load', (event) => {
draw(canvas1);
});

这很管用!

模块的默认作用域是该模块,而不是全局作用域。

draw方法仅存在于该模块内部。

任一:

  • addEventListener代码放入drawBalls.js
  • exportdraw函数,然后import将其加载到另一个脚本中,而不是用<script>元素加载drawBall.js

您也可以显式地将draw指定为window的属性,但这是一个肮脏的破解,我不建议这样做。

您将drawBalls.js包含为一个模块,但不从您的模块导出draw函数——德皮尔舍

您将脚本用作模块。假设你正在制作一个NPMjs包,然后构建index.js。你会如何要求和使用这个模块?

在需要你的包之前,在index.js中,你需要导出它来导入/包含它。

这是module.exports:的基本语法

drawBalls.js
module.exports = draw;

EDIT:上面的代码是针对CommonJS模块的。使用export(就像使用import一样(:

export draw;

相关内容

最新更新