使用"parcel index.html"后外部.js不起作用



所以我有一个我试图创建的网站,我只是一次又一次地遇到同样的错误。当我双击我的index.html时,下面的所有代码都可以正常工作,但如果我使用";包裹索引.html";在控制台中,它说";未捕获引用错误:未定义测试";。HTML是:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Learn Ambivalendrish</title>
<link rel="stylesheet" href="/style/index.scss">
<script src="js/script.js"></script>
</head>
<body>
<h1 onclick="test()">This is a header for testing purpose</h1>
</body>
</html>

我的js是:

function test(){
alert('test alert')
}

我已经试过做了

export function test(){
alert('test alert')
}

let test = () =>{
alert('test alert')
}

模块绑定器希望脚本成为程序的入口点。

您的问题是希望脚本创建一个全局变量,然后从外部读取该全局变量。

bundler没有预料到这一点,所以当它重写脚本时,它不会注意确保创建一个具有该名称的全局变量。


重写代码,使脚本成为切入点。

不要使用内部事件属性,请将事件处理程序与addEventListener绑定。

addEventListener('DOMContentLoaded' () => {
const heading = document.querySelector('h1');
heading.addEventListener(test);
});

旁白:标题并非设计为交互式控件。默认情况下:鼠标经过它们时,它们不会做出反应。它们看起来不像你可以点击的东西。屏幕阅读器不会宣布它们是交互式的。你不能给他们打标签。如果你想点击一些东西来触发JS,可以使用<button>

最新更新