10

在尝试排除为什么systemjs找不到我安装的自定义库时(可能是一个后续问题),我在尝试“手动”执行操作时遇到了问题。

因此,我有一个由3个文件组成的简单系统:

  • 索引.html
  • 高js
  • 高2.js

索引只是:

<!DOCTYPE html><html><头部><元字符集=“utf-8”><title>测试</头><body><script src=“hi.js”></script></body></html>

高js:

从“hi2.js”导入*作为hi;hi.myFunction();

高2.js:

函数myFunction(){警报(“hi”)}导出{myFunction};

现在,当我运行(使用webstorm和chrome 62)以上代码时,我得到(chrome)调试器报告的以下错误:“Uncaught SyntaxError:意外的令牌导入”

这里发生了什么?我检查了javascript的合规性关于mdn它告诉我,chrome 61和更新版本支持导入我使用chrome 62进行测试。

那么,发生了什么,以及如何使其发挥作用?

建议我还将html行更改为<script type=“module”src=“hi.js”></script>。那一点帮助都没有,同样的错误。

4
  • 1
    当您添加type=“模块”,而不是意外的标记错误,您应该得到未捕获类型错误:无法解析模块说明符“hi2.js”(我在Chrome 62上看到了。) 评论 2017年11月8日14:28
  • 1
    这是你的档案夹。我已经在Chrome 61中验证了这一点,并进行了添加修复./. 评论 2017年11月8日14:31
  • 1
    @T。J.克劳德:事实上,我没有深入研究,没有在调试模式下运行“模块”,只是看到它不起作用,认为错误应该是一样的;需要等待才能接受。
    – 保罗23
    评论 2017年11月8日14:31
  • @鲍尔23:我讨厌这样做(而且我做的次数比我想做的要多)。 评论 2017年11月8日14:39

1答案1

重置为默认值
19

你说得对,你需要type=“模块”在您的脚本标签上:

<script src=“hi.js”type=“module”></script><!-- ---------------^^^^^^^^^^^^^       -->

您还需要一个./模块说明符上的前缀:

从“./hi2.js”导入*作为hi;// ------------------^^

这是为没有路径的说明符敞开大门,以便随着事物的发展在某些阶段具有特殊意义。发件人WHAT-WG规范:

这个限制(相对URL说明符必须以开头/,./,或../–T.J.)这样,将来我们可以允许自定义模块加载器为“裸”导入说明符赋予特殊含义,如导入“jquery”导入“web/crypto”。目前,任何此类导入都将失败,而不是被视为相对URL。

当我对你的文件进行这两项更改时,Chrome 62没有设置实验标志,我收到了警告。

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.