首页 > 解决方案 > 如何在 Sapper 应用程序中为每个人提供全局“断言”?

问题描述

我想为assert我正在制作的 Sapper 应用程序中的所有代码提供运行时。

编辑:

引入assert模块适用于server构建,但不适用于client构建,在浏览器中显示以下 500 条错误消息中的任何一条:

我的rollup.config.jspackage.json

免责声明:我是 Svelte 和 Sapper 的新手,不知道应该在这里做什么。我的目标不仅是让它工作,还要了解哪里出了问题(即了解 Sapper/Svelte 包装机制)。


原文说明:

这应该很简单。定义一个全局高点(应用程序可以importrequire将其assert放置可用)。在实践中,我仍然感到困惑。

我考虑过window.assert直接设置(有点苛刻?)并将值作为参数传递给那些实际需要它的组件(但参数传递看起来很困难)。

这是一个依赖注入的情况,我希望有一个assert并且较低的代码不在乎,哪种味道。

注意:console.assert不会这样做,因为它只会打印出消息。Chrome 有一个让它崩溃的选项。我可以考虑一下。

标签: svelterollupjssapper

解决方案


服务器端

assert模块内置于node. 例如,如果您将其导入src/server.js并调用它就assert(false, "whoops")可以正常工作。

客户端

由于没有浏览器版本的assert模块,您需要将 npm 包assert作为 a安装devDependency,然后将其包含在您的包中。

这是通过将其导入来完成的src/client.js

// src/client.js
import assert from 'assert'

....

现在您也可以在.svelte文件中导入它:

<!-- Example.svelte -->
<script>
  import assert from assert

  assert(false, "dang it")
</script>

推荐阅读