捕获错误`模块必须以“ /”、“./”或“ ../”开头

时间:2020-02-25 05:59:20

标签: javascript google-chrome firefox ecmascript-6 progressive-web-apps

示例

<!-- index.html -->
<script type="module">
    import 'someModule'
</script>

TypeError:解决模块说明符时出错:someModule


未捕获的TypeError:无法解析模块说明符“ someModule”。相对引用必须以“ /”、“./”或“ ../”开头。


问:

  1. 是否可以捕获此错误
  2. 此错误发件人

上下文

在这种情况下,可以使用服务工作者捕获并解决依赖项。

<script type="module">
    import '/someModule'
</script>

2 个答案:

答案 0 :(得分:0)

您没有按照错误日志正确地导入它。

有效的模块说明符必须与以下之一匹配: 完整的非相对URL。就像这样,通过新的URL(moduleSpecifier)放置时不会引发错误。

Starts with /.
Starts with ./.
Starts with ../.

其他说明符保留供将来使用,例如导入内置模块。

只需尝试以下代码:

<script type="module">
    import {someModule} from './someModule.js';
</script>

答案 1 :(得分:0)

您无法捕获该错误,除非您使用一些非标准的未捕获异常处理程序,例如浏览器中的window.onerror或Node.js中的process.setUncaughtExceptionHandler

无法捕获该错误,因为在模块全局范围内,import语句仅允许在任何块之外使用。因此,如果您尝试将import包装到try..catch中,则会抛出SyntaxError。

您可以使用动态import()语法建议,该建议可以在任何地方调用;并处理其诺言拒绝。