ES6导入error handling

我目前正在使用Babel。

我以前用以下方法做了以下操作:

 try { var myModule = require('my-module'); } catch (err) { // send error to log file } 

但是,当试图通过import来做到这一点:

 try { import myModule from 'my-module'; } catch (err) { // send error to log file } 

我得到的错误:

“导入”和“导出”可能只出现在顶层

现在我明白, import是不同的require 。 从阅读是否ES6模块import悬挂? 这意味着在执行代码之前加载import。

我之前做的是,如果任何需要失败的日志创build,通过电子邮件(发送日志logstash等)通知我。 所以我的问题归结为以下几点。

如何在nodejs中以良好的实践方式处理导入错误? 这样的事情存在吗?

这个谈话把它拿走: https : //github.com/ModuleLoader/es-module-loader/issues/280,并同意你说的话。

导入只能在基本级别上运行。 它们是静态的,并且始终在模块运行之前加载。

所以你不能做代码检查。

但好消息是,由于它是静态的,因此可以分析,像webpack这样的工具在构build时会抛出错误。