svelte - 如何在 Sapper 应用程序中为每个人提供全局“断言”?
问题描述
我想为assert
我正在制作的 Sapper 应用程序中的所有代码提供运行时。
编辑:
引入assert
模块适用于server
构建,但不适用于client
构建,在浏览器中显示以下 500 条错误消息中的任何一条:
import { strict as sa } from 'assert';
这样,客户端构建会显示警告:
'assert' is imported by src/assert.js, but could not be resolved – treating it as an external dependency
const sa = require("assert").strict;
这样,客户端构建就通过了。:/
我的rollup.config.js
和package.json
。
免责声明:我是 Svelte 和 Sapper 的新手,不知道应该在这里做什么。我的目标不仅是让它工作,还要了解哪里出了问题(即了解 Sapper/Svelte 包装机制)。
原文说明:
这应该很简单。定义一个全局高点(应用程序可以import
或require
将其assert
放置可用)。在实践中,我仍然感到困惑。
我考虑过window.assert
直接设置(有点苛刻?)并将值作为参数传递给那些实际需要它的组件(但参数传递看起来很困难)。
这是一个依赖注入的情况,我希望有一个assert
并且较低的代码不在乎,哪种味道。
注意:console.assert
不会这样做,因为它只会打印出消息。Chrome 有一个让它崩溃的选项。我可以考虑一下。
解决方案
服务器端
该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>
推荐阅读
- reactjs - TypeError:this.props.decrementCount 不是函数
- javascript - 主题发射后的 RxJS 执行顺序
- django - 输入类型 Date 在页面 RTL 中没有值,在页面 LTR 时有值
- ios - Firebase登录成功后如何呈现/执行主视图控制器?
- excel - 使用 Office.js,如何在 Excel 中获取表格的确切样式
- c++ - GDI+ 库在为 XP 编译时在 VS2017 中导致“错误 C2760:语法错误:意外令牌'标识符',预期的'类型说明符'”
- windows - 将此 GPG 加密 bash 脚本转换为 powershell 有意义吗?有没有更简单的方法论?
- three.js - 将 HDR 环境贴图与 Node 材质一起使用
- java - 在 Spring 下使用 Java 而不是 XML 配置 Logback
- codenameone - 错误日志显示有关软件导致连接中止的错误