ES6导入错误处理

2024-01-06

我目前正在使用巴别塔。

我之前做了以下操作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(使用前将#替换为@)

ES6导入错误处理 的相关文章

随机推荐

  • DataGridView 绑定问题:“索引 -1 没有值。”

    我有一个绑定到绑定源的 datagridview 和表单上的几个按钮 一个按钮将项目添加到绑定源 另一个按钮删除当前选定的项目 还有一个事件处理程序 用于侦听 CurrentChanged 事件并更新 删除 按钮的 启用 状态 一切都很顺利
  • AWSElasticBeanstalkFullAccess(提供完全访问...)等效项?

    我正在学习有关 AWS Beanstalk 的课程 该课程可能已经过时 在 IAM 管理控制台中添加了一个用户 并且直接附加的现有策略之一是AWSElasticBeanstalkFullAccess 我自己在过滤策略时找不到它 这是改名了吗
  • 使用协议“YourProtocol”作为类型必须写为“any YourProtocol”错误

    我在实施协议时遇到错误 我已在名为 的文件中声明了如下协议 TransactionListViewViewModelItem swift 以下是我在此文件中的内容 protocol TransactionListViewViewModelI
  • 如何向 PHP/SQL 搜索脚本添加拼写建议

    使用 php sql 在我的网站上创建搜索功能 非常简单 只需使用 LIKE 子句在数据库上使用 SELECT ALL 查询并在页面上回显结果即可 我的问题是 如果用户输入错误的搜索查询 如何添加拼写建议 除非搜索词与数据库内容完全匹配 否
  • 如何在 MAT Eclipse 中使用 OQL 进行嵌入式查询

    我可以使用如下查询获取所有 Thread 对象 SELECT OBJECTS dominators s FROM java lang Thread s 那么如果我想对返回的结果对象进行进一步的分析 我认为OQL应该如下所示 SELECT f
  • Xamarin.Forms ListView 大小到内容

    我有一个相当大的表单 主要适用于平板电脑 它有一个 GridView 嵌套两个 stacklayouts 和 listview 我很少有一个 ListView 包含一些单行项目 并且我需要它来调整内容的大小 这是我的源代码
  • 单击电子邮件中的 Outlook safelink 保护链接似乎会执行代码两次

    这与编码本身并没有真正的关系 我的项目是在 Laravel 7 1 中 但更多的是在 Outlook 的安全测量中 基本上我有一个功能 可以发送一封包含按钮的电子邮件 它是一个带有令牌的链接 以及我的 Laravel 项目中用于执行某些操作
  • Discord.py SSLCertVerificationError

    我一直在开发一个机器人 昨晚它根据需要运行得很好 但今天早上当我在终端中打开机器人时 出现以下错误 Traceback most recent call last File d Documents Bots DS BOT bot py li
  • 我可以从 Windows 窗体应用程序运行编码 UI 测试吗?

    我可以从 Windows 窗体应用程序运行编码 UI 测试吗 正在寻找样本 Thanks 当然可以 您可以使用 mstest exe 命令行应用程序来运行编码的 UI 测试 您只需要编写简单的算法 确保在启动 mstest 时传递正确的参数
  • Symfony2 反向代理 - 基于 cookie 或其他设置分离相同 URL 的缓存

    我使用默认的 Symfony2 反向代理 并且需要根据 cookie 设置单独缓存同一 URL 该网站通过缩小图像和删除 JavaScript 来提供 基本 网站视图 由于内容相同 我使用了相同的 URL 但缓存当然是一个问题 我需要能够单
  • ASP Classic SQL Server 以 XML 格式从数据库返回结果

    我试图从 ASP 中的查询返回结果 当我使用 Response write Recordset 0 之类的东西时它可以工作 但它不能以 xml 格式工作 这是我的代码 Dim conn Dim Recordset Dim xmlDoc Se
  • 带有固定种子的 scipy.sparse.linalg.eigsh

    我正在尝试使用scipy sparse linalg eigsh https docs scipy org doc scipy reference generated scipy sparse linalg eigsh html具有固定种子
  • 如何使用远程页面的构造函数在 Greasemonkey 用户脚本中创建对象?

    我的用户脚本将运行的页面有一个命名空间 该命名空间定义了一个构造函数 我想使用相同的构造函数创建一个对象 并在我的用户脚本中使用该对象的方法 到目前为止我还没有成功 这就是我正在尝试做的事情 该页面具有以下本机 JavaScript 块 v
  • LinkedIn 岗位检查员给出 500 次失败

    我经营一个博客网站 我正在尝试在 LinkedIn 上分享博客 当我在 LinkedIn 帖子检查器上检查帖子时 它给出 500 错误 我不确定可能出了什么问题 因为我已经包含了元标记 并且我能够在 Facebook 上发布相同的 URL
  • jQuery SlideToggle Google 地图问题

    我读过其他类似的线程 但没有任何问题 响应 这有助于使其足够简单以了解我需要做什么 我使用的是 jQuery 版本 1 7 这可能解释了为什么其他问题中发布的一些代码不相似 Google 地图加载在 SlideToggle 的 div 中
  • 这两个控制器定义有什么区别? [复制]

    这个问题在这里已经有答案了 当我运行代码时 选项A失败但不确定原因是什么 angular module app controller controllerA function scope http code angular module a
  • 使用 fscanf() 使用 feof()

    这是我的代码 include
  • 如何在窗口中捕获数据

    我的计算机上安装了桌面应用程序 当我启动程序时 会打开某种窗口 让我们说 像这样 只是例子 因此 我想用 C 编写一个应用程序来查找此窗口并从中捕获一些数据 我应该看什么工具 我想走一条阻力最小的路 我需要捕获图像 文本框中的文本 还需要通
  • MSpec:如何使静态变量线程安全?

    我正在将 MSpec 用于我的最新项目 总的来说我对它非常满意 但是 当我的测试并行运行时 我确实遇到了并发问题 我想知道是否有人遇到过这个问题 或者更好的是 有解决方案吗 MSpec 严重依赖静态方法和变量来工作 现在 当我在基类中定义由
  • ES6导入错误处理

    我目前正在使用巴别塔 我之前做了以下操作require try var myModule require my module catch err send error to log file 但是当尝试这样做时import try impo