繁体   English   中英

尝试导入时收到 Javascript 错误“未捕获的语法错误:无法在模块外使用导入语句”。 找到解决方案

[英]Receiving Javascript error "Uncaught SyntaxError: cannot use import statement outside a module" when trying to import. Solution found

深入细节,我试图从一个名为 GLTFLoader 的 JS 文件导入代码,用于 Three.js。目标是解析一个 .GLB 文件并呈现一个茶壶。

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>
        Three.js #1
    </title>
    <style>
        body{margin: 0;}
    </style>
</head>
<body>
    <script src="js/three.js"></script> // A dependecy.
    <script src="js/cube.js"></script> // The main script.
    <script src="js/loaders/GLTFLoader.mjs"></script> // The module I am trying to import code
</body>                                               // from.
</html>

导入代码和需要导入的代码。 如果需要可以上传完整代码。

import {GTLFLoader} from "js/loaders/GLTFLoader.mjs"

// Create a mesh.
const loader = new GLTFLoader(); // Instantiate loader.
loader.load("assets/models/utahteapot.glb", function (gltf) { // Load the model.
scene.add(gltf.scene); // Add the loaded model to scene.
}, undefined, function (error) { // Return an error if there is one.
console.error(error);
});

我试过在脚本标签中使用“type="module"" 标签,我试过直接从 url 源上传 Loader 代码,我试过在 HTML 文件中导入代码,我什至试过创建一个本地服务器托管这些文件。 我以前不这样做,现在我仍然这样做。 我已经没有想法了; 我找不到解决办法。 编辑:忘记提及,文件 GLTFLoader 扩展名是 .MJS,因为我遇到了一个不相关的错误。

我找到了解决办法。 这不是我输入或索引文件的方式,而是我在本地服务器上为它们提供服务的方式。

MIME 错误是由于当我需要它作为“application/x-javascript”返回时,文件总是作为不正确的 MIME 类型“纯文本”返回。 导入错误是由于我没有将 type="module" 添加到 HTML 文件中的 main.js 文件中。

因此,我寻找了一个 python 脚本,它创建了一个 LocalHost 服务器,可以正确地提供文件。 所以这意味着我可以 label main.js 文件作为一个模块,并从其他文件导入我需要的东西。

这是脚本的 git。

注意:您可能必须更改本地主机号。 设置的数字是 8080,我不得不在我的文件实际更新之前将我的更改为 8090。 如果您的文件没有更新或返回错误,请记住这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM