当前位置: 首页 > 知识库问答 >
问题:

在导入ECMAScript 6时,"未捕获的语法错误:无法在模块外使用导入语句"

杜翰林
2023-03-14

我正在使用ArcGIS JSAPI 4.12,并希望使用空间错觉在地图上绘制军事符号。

当我向脚本添加milsymbol.js时,控制台返回错误

未捕获的SyntaxError:无法在模块外部使用导入语句`

因此,我将type=“module”添加到脚本中,然后它返回

未捕获的引用错误:未定义ms

这是我的密码:

<link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/css/main.css">
<script src="https://js.arcgis.com/4.12/"></script>
<script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>

<script>
    require([
        "esri/Map",
        "esri/views/MapView",
        "esri/layers/MapImageLayer",
        "esri/layers/FeatureLayer"
    ], function (Map, MapView, MapImageLayer, FeatureLayer) {

        var symbol = new ms.Symbol("SFG-UCI----D", { size: 30 }).asCanvas(3);
        var map = new Map({
            basemap: "topo-vector"
        });

        var view = new MapView({
            container: "viewDiv",
            map: map,
            center: [121, 23],
            zoom: 7
        });
    });
</script>

因此,无论我是否添加type=“module”,都会出现错误。然而,在空间幻觉的官方文件中,脚本中没有任何type=“module”。我现在真的很困惑。他们如何在不添加类型的情况下使其工作?

import { ms } from "./ms.js";

import Symbol from "./ms/symbol.js";
ms.Symbol = Symbol;

export { ms };

共有3个答案

柳浩大
2023-03-14

看起来错误的原因是:

>

  • 您当前正在加载src目录中的源文件,而不是dist目录中的构建文件(您可以在这里看到预期的分布式文件)。这意味着您在未更改/未捆绑状态下使用本机源代码,导致以下错误:未捕获的同步错误:无法在模块之外使用导入语句。这应该通过使用捆绑版本来解决,因为包正在使用汇总来创建捆绑包。

    您得到Uncaught ReferenceError:ms未定义错误的原因是模块的作用域是有限的,并且由于您使用本机模块加载库,ms不在全局作用域中,因此无法在以下脚本标记中访问。

    看起来您应该能够加载此文件的dist版本,以便在窗口中定义ms。请从库作者处查看此示例,以了解如何实现这一点。

  • 姜正初
    2023-03-14

    “type”:“module”添加到包.json文件中。

    {
      // ...
      "type": "module",
      // ...
    }
    

    注意:当使用模块时,如果你得到ReiscceError:要求没有定义,你需要使用导入语法而不是要求。你不能在它们之间自然地混合和匹配,所以如果你需要同时使用它们,你需要选择一个或者使用捆绑器。

    东方琪
    2023-03-14

    我出现此错误是因为我忘记了脚本标记中的type=“module”

    <script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>
    
     类似资料:
    • 我正在尝试使用导入关键字。我的ASP中的jsx文件。NETMVC5项目。我希望能够将其他React组件导入到另一个React组件中,但是,在使用import关键字时,出现以下错误: 未捕获的SyntaxError:无法在模块外部使用导入语句 下面是我的代码: 我ndex.cshtml: 辅导的jsx: 议论jsx: 如果我没有导入,或者如果我直接在教程中添加注释类。jsx,运行良好,但这不是我想要

    • 今天我决定尝试学习React,但每当我尝试导入以下两个模块时: 我得到一个错误: 未捕获的SyntaxError:无法在模块外部使用导入语句 以下是我尝试创建React程序所采取的步骤: 安装NodeJS 为什么我会出现这个错误,我该如何修复它?

    • 试图将用户模型中的“uuid”作为

    • 我有一本书。节点js(07.10.19版本的node.js的最新版本)应用程序中的ts文件,带有导入节点模块而无默认导出。我使用这种结构:

    • 我有一个ApolloServer项目给我带来了麻烦,所以我想我可能会更新它,并在使用最新的巴别塔时遇到问题。我的“index.js”是: 当我运行它时,我得到了错误 首先,我试图做一些事情来说服TPTB*这是一个模块(没有成功)。所以我把“导入”改成了“要求”,这就奏效了。 但是现在我在其他文件中有大约24个“导入”给我同样的错误。 *我确信我的问题的根源是我甚至不确定是什么在抱怨这个问题。我有点

    • 在测试其中一个功能时,我遇到了这种错误。到底是什么问题? /用户/user/websprojects/hsu/src/path finding/path finding。spec.js:1从'chai'导入{expect}^^^^^^ 语法错误:无法在WrapSafe(节点:内部/模块/cjs/加载器: 1018:16)的模块外使用导入语句。_compile(节点:内部/模块/cjs/加载器: 1