导入/导出声明只能出现在模块的顶层

Vit*_*lla 5 javascript flask es6-modules

我是网络编程的新手,我正在尝试一个非常简单的例子来了解它是如何工作的。

html file
Run Code Online (Sandbox Code Playgroud)
<html>
<head>
<meta charset="ISO-8859-1">

<script type="text/javascript" src="/static/js/AddButton.js"></script>
<script type="text/javascript" src="/static/js/SendRequest.js"></script>

<title>{{title}}</title>


</head>
<body>

<button type="button" onclick="AddForm()"> + </button>

<div id = "newFormHere"></div>


<form action="javascript: SendFetchRequest()" id ="Form2">
    Ticker2:
        <input type="text" id="Ticker2" value="GOOG">
        <input type="submit" value="Submit">
        <div id = "FetchRequestOutput"></div>
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我有一个Form2向服务器发送请求的表单 ( ) 和一个向页面添加更多表单的按钮。

SendRequest.js (exporting functions)
Run Code Online (Sandbox Code Playgroud)
export {SendFetchRequest}



function SendFetchRequest()
{
    var Ticker = document.getElementById("Ticker2");
    fetch("action_page" + "?Ticker=" + Ticker.value).then(function(response){
            response.text().then(function(data){
                    document.getElementById("FetchRequestOutput").innerHTML = data
            })

    })


}
Run Code Online (Sandbox Code Playgroud)

在这里,我定义了我希望附加到按钮的函数(我需要将它包含在 AddButton.js 和 html 文件中)

AddButton.js  (importing functions)
Run Code Online (Sandbox Code Playgroud)
import { SendFetchRequest } from '/static/js/SendRequest.js';

function AddForm()
{
    var myform = document.createElement("FORM");
    myform.setAttribute("id", Math.random());
    myform.setAttribute("type", "form");
    myform.action = "javascript: SendFetchRequest()";

    myinput = document.createElement("INPUT");
    myinput.setAttribute("type", "text");
    myinput.setAttribute("value", "SomeDefaultValue");

    mysubmit = document.createElement("INPUT");
    mysubmit,setAttribute("type", "submit");
    mysubmit.setAttribute("value", "Submit")

    myform.appendChild(myinput)
    myform.appendChild(mysubmit)

    document.getElementById("newFormHere").appendChild(myform)
};
Run Code Online (Sandbox Code Playgroud)

这里是动态添加新按钮的代码。

我正在使用 Flask + Firefox 64 测试此代码。我得到的错误如下。

SyntaxError: import declarations may only appear at top level of a module AddButton.js:6 
SyntaxError: export declarations may only appear at top level of a module  SendRequest.js:6.js:6 
Run Code Online (Sandbox Code Playgroud)

我遵循了此页面上的第一个示例 如何在另一个 JavaScript 文件中包含 JavaScript 文件?

如果尝试使用“模块”

Loading failed for the module with source “http://127.0.0.1:5000/static/js/AddButton.mjs”.
Loading failed for the module with source “http://127.0.0.1:5000/static/js/SendRequest.mjs”.
Run Code Online (Sandbox Code Playgroud)

客户端甚至无法加载脚本。

Ork*_*nov 8

type="text/javascript" 应该 type="module"

看到这个线程