我目前正在使用 Babel。
我之前使用 require
做了以下操作:
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' and 'export' may only appear at the top level
现在我了解到 import
与 require
不同。来自阅读Are ES6 module imports hoisted? import
提升,这意味着在代码执行之前加载导入。
我之前所做的是,如果任何要求失败,则会创建一个日志,该日志会通过电子邮件提醒我(将日志发送到 logstash 等)。所以我的问题归结为以下几点。
如何在 nodejs 中以一种良好的实践方式处理导入错误?这样的事情存在吗?
最佳答案
您无法捕获 静态导入 错误(参见 Boris 的回答)
不过,您可以为此使用动态 import()
。
现在是 supported by all evergreen browsers & Node ,并且是标准的一部分since ES2020 .
class ImportError extends Error {}
const loadModule = async (modulePath) => {
try {
return await import(modulePath)
} catch (e) {
throw new ImportError(`Unable to import module ${modulePath}`)
}
}
关于node.js - ES6 导入错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38946112/