我目前正在使用巴别塔。
我之前做了以下操作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
不同于require
。来自阅读ES6模块导入是否被吊起? https://stackoverflow.com/questions/29329662/are-es6-module-imports-hoisted import
吊机意味着在代码执行之前加载导入。
我之前所做的是,如果任何要求失败,则会创建一个日志,通过电子邮件提醒我(将日志发送到logstash等)。所以我的问题归结为以下几点。
如何在 Node.js 中以一种良好的实践方式处理导入错误?这样的事情存在吗?
你抓不到静态导入错误(参见鲍里斯的回答)
然而,你可以使用动态import()
为了那个原因。
下雪了所有常青浏览器和 Node 都支持 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#browser_compatibility,并且是标准的一部分自 ES2020 以来 https://github.com/tc39/notes/blob/master/meetings/2019-06/june-4.md#dynamic-import-for-stage-4.
class ImportError extends Error {}
const loadModule = async (modulePath) => {
try {
return await import(modulePath)
} catch (e) {
throw new ImportError(`Unable to import module ${modulePath}`)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)