zod TypeError:无法读取未定义的属性(读取“_parse”)

2024-03-05

我有一个使用 Zod 的 Vite 库。我想解析配置,我的文件夹结构与配置对象结构类似。index.ts文件始终导出其自己目录中的所有文件及其子目录中的所有内容,例如export * from './subDir';所以根文件导出“整个库”。

以下设置显示了单个配置分支

Stackblitz 上的示例代码 https://stackblitz.com/edit/vitest-dev-vitest-fchtxz

.
├── src
│   ├── api
│   │   ├── dataSources
|   |   |   ├── dataSource
|   |   |   |   ├── following
|   |   |   |   |   ├── computed
|   |   |   |   |   |   ├── followingComputedDataSourceConfigurationSchema.ts ( extends dataSourceConfigurationSchema )
|   │   │   |   |   |   └── index.ts
|   |   |   |   |   ├── entity
|   |   |   |   |   |   ├── followingEntityDataSourceConfigurationSchema.ts ( extends leadingDataSourceConfigurationSchema )
|   │   │   |   |   |   └── index.ts
|   │   │   |   |   └── index.ts
|   |   |   |   ├── leading
|   |   |   |   |   ├── leadingDataSourceConfigurationSchema.ts ( extends dataSourceConfigurationSchema )
|   │   │   |   |   └── index.ts
|   |   |   |   ├── dataSourceConfigurationSchema.ts ( base schema )
│   │   |   |   └── index.ts
|   |   |   ├── dataSourcesConfigurationSchema.ts ( expects leading and array of followings )
│   │   |   └── index.ts
|   |   ├── apiConfigurationSchema.ts ( expects dataSources )
│   │   └── index.ts
│   └── index.ts 
└── test
    └── basic.test.ts

问题是我认为我遇到了循环依赖项导入。我使用 Vitest 通过测试检查了架构

it('fails.', () => {
  expect(() => apiConfigurationSchema.parse({})).not.toThrow();
});

通过这样做我得到以下错误

类型错误:无法读取未定义的属性(读取“_parse”)

我不想将模式合并到一个大文件中,因为子目录可能还包含此特定部分的自定义验证函数。

您对如何修复此设置有任何想法吗?


你有一个循环依赖(在2index.ts)

// index.ts
export { apiConfigurationSchema } from './apiConfigurationSchema';
export * from './dataSources';
// apiConfigurationSchema.ts
import { dataSourcesConfigurationSchema } from '.';
export const used = __use(dataSourcesConfigurationSchema )

您进口和使用再出口的地方*在重新出口之前

所以,你需要解决的只是......

// index.ts
export * from './dataSources';
export { apiConfigurationSchema } from './apiConfigurationSchema';

...只是交换两个文件中的两行

https://stackblitz.com/edit/vitest-dev-vitest-8uh3ya?file=src/api/index.ts https://stackblitz.com/edit/vitest-dev-vitest-8uh3ya?file=src/api/index.ts



研究详细信息:我创建了一个文件

// a.ts
import { apiConfigurationSchema } from './src/api/apiConfigurationSchema';
apiConfigurationSchema.parse({});

,已安装tsx包,跑tsx watch a,并查找错误所在,直到修复为止

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zod TypeError:无法读取未定义的属性(读取“_parse”) 的相关文章

  • 浏览器中缺少 Angular 12 源地图

    我们已经升级到角12最近遇到一个问题 即浏览器源映射丢失 因此我们无法调试我们的组件文件 因为没有任何组件文件 谁能建议我缺少什么 Angular 12 更改了默认的 ng build 以使用 生产 配置 你想要 sourceMap 所以尝
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • 如何通过 HTML 按钮播放声音

    我目前通过网站播放音乐的方法是通过 HTML 音频标签 不过我希望能够通过 HTML 按钮来播放它 该按钮应该能够在播放和停止之间切换音乐 我在 JSFiddle 创建了一个示例 但不知道如何实现它 有人可以告诉我如何使用我的 JSFidd
  • 计算Javascript中两次点击之间的时间

    我想用 javascript 计算属性的两次点击之间的时间 但我不知道如何 例如 a href click here a 如果用户单击多次 假设 5 秒内 我想显示警报 如果有帮助的话我正在使用 jQuery 我对 javascript 不
  • 将 Sweet Alert 弹出窗口添加到 React 组件中的按钮

    我为 Bootstrap 和 React 找到了这个完美的 Sweet Alert 模块 我在 Meteor 应用程序中使用它 http djorg83 github io react bootstrap sweetalert http d
  • 响应式网格布局框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 保存/导出Chrome的JavaScript控制台输入历史记录

    无论如何 我可以保存或导出 JavaScript 控制台的历史记录吗 input 控制台历史记录 在 Google Chrome 中 我不想保存输出或错误 因此将鼠标悬停在控制台框上 右键单击并选择Save as 不是解决方案 我不想每次都
  • 如何改变HTML5视频的播放速度?

    如何更改 HTML5 中的视频播放速度 我查过视频标签的属性 https www w3schools com html html5 video asp在 w3school 但无法做到这一点 根据这个网站 http www chipwreck
  • Aptana Studio 3 上的预览选项卡在哪里?

    我在 Windows PC 上使用 Aptana Studio 2 并有一个选项卡用于在 IE 上预览页面 另一个选项卡用于在 Firefox 上预览 但我切换到了 Aptana 3 我不知道是没有预览还是我没有找到它 是的 我在 stac
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • 如何滚动到div内的元素?

    我有一个滚动的div我想在点击它时发生一个事件 它会强制执行此操作div滚动以查看内部元素 我写的JavasCript是这样的 document getElementById chr scrollIntoView true 但这会在滚动时滚
  • 选中复选框时提交表单

    有没有办法在选中复选框时提交表单
  • 如何将 Browserify 与外部依赖项一起使用?

    我正在尝试慢慢地将 Browserify 引入我的网站 但我不想重写所有 js 也不希望 jquery 和其他库的重复实例与我的 Browserify 版本捆绑在一起 如果我构建将 jquery 列为外部依赖项的模块 那么如何将其指向我的全
  • React无限滚动scrollableTarget动态获取id?

    我在我的项目中使用react infinite scroll component 如何让scrollableTarget动态获取item id 我试过这样scrollableTarget item id 但它不起作用 必须与该 div 具有
  • 我如何断言某个元素不在剧作家的页面上?

    我正在测试一个包含徽标的网站 并且我想确保该徽标不会出现在某些页面上 如何断言某个元素不存在 我检查了剧作家断言文档 https playwright dev docs assertions 但它只有检查确实存在的事物的示例 async a
  • ES6 模板文字的延迟执行

    我正在玩新的ES6 模板文字 http tc39wiki calculist org es6 template strings 我首先想到的是String format对于 JavaScript 所以我开始实现一个原型 String pro
  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • 当选择下拉列表中的某些值时,取消选中复选框

    当我从下拉列表中选择某个值或用户未从下拉列表中选择任何值时 我需要取消选中复选框 我现在正在使用 Jquery 这是我现在使用的代码 但它不起作用 Script
  • Restangular - _.contains() 不是一个函数

    如果您最近通过 Bower 更新了 Restangular 它将安装最新的 Lodash 新的 4 0 然而 这是一个问题 因为 Restangular Angular 现在会抛出错误 contains 不是函数 你怎么解决 解决方案非常简
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing

随机推荐

  • 对于 Web 开发商店(10+)来说,Symfony 是否是比 Zend 更好的选择,因为它是一个全栈框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的工作团队正在考虑使用一个框架来开发网站和应用程序 一些前辈确信我们应该使用 Zend Framework 因为它更容易挑选功能 因此我们的框
  • 每次删除定时器都需要调用timer_delete吗?

    I used timer create 在下面的代码中 它只会在 10 秒后触发一次处理程序 struct itimerspec itimer 0 0 10 0 struct sigevent si memset si 0 sizeof s
  • 滚动条相交的烦人方块

    我有一个带有 ScrollViewer 的应用程序 两个滚动条相遇的地方是一个令人讨厌的小方块 见下面的图片 我正在尝试摆脱它 当我 窥探 应用程序时 我可以发现它是一个 矩形 但我假设它是 ScrollViewer 的一部分 我已经搜索并
  • “没有 AuthGuard 提供商!”在 Angular 2 中使用 CanActivate

    EDIT 显然这已经过时了 现在你在providersNgModule 中的数组 查看其他答案或官方文档以获取更多信息 组件上的引导已经过时了 provideRouter 也已经过时了 我正在尝试使用 Angular2 指南中的登录名和 A
  • 我们如何使用 PHP 代码通过 google docs api 在 google docs 中插入页眉和页脚

    我想使用 PHP 代码中的 google docs api 在我的 google 文档中插入页眉和页脚 我正在这样做 requests new Google Service Docs Request array createHeader g
  • Nodejs 有没有办法以 JSON 格式打印 log4js 输出?

    我正在尝试以 JSON 格式获取 log4js 的输出 以便我可以轻松跟踪它 有没有什么方法我们必须在configuration json中进行设置 以便log4js生成的输出将采用JSON格式 目前我正在使用以下配置 appenders
  • 高级:为什么 ?function(){} 在 R 中有效

    我了解 R 中的一些运算符和函数在使用帮助函数之前需要反引号 但是 我不明白为什么 function 也有效 有人对此有任何想法吗 让我们看看会发生什么 的代码使用 flow 包 它可以帮助您检查代码所采用的逻辑路径 遵循整行 flow f
  • 创建虚拟机实例后如何扩展默认分区? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用 FI WARE 云创建了一个具有 12GB 磁盘的 Centos x64 VM 实例 我可以毫无问题地访问它 并且我已经开始安装软
  • Rails 后台进程的进度条

    我的 Rails 应用程序中有几个进程调用外部 Web API 并且需要很长时间才能完成 我考虑过将它们移至后台处理 我希望能够向用户显示后台进程的进度 即进度条 首先 是否有关于在 Rails 中使用 jQuery 实现进度条 与文件上传
  • 为什么 Docker 容器镜像这么大? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我通过 Fedora 的 Dockerfile 制作了一个简单的镜像 最初 320 MB 添加了Nano 这个1MB大小的微型编辑器
  • Mercurial(我猜还有 Git)与 Dropbox:有什么缺点吗?

    我有一个用于个人项目的 Mercurial 存储库 并且我已经将主存储库存储在我的 Dropbox 中几周了 沿着这条线 http iamthewalr us blog 2009 02 mercurial and dropbox 我明白这也
  • 如何同时发出多个axios请求?

    此时我有一个网页 其中正在发出一长串 Axios POST 调用 现在 请求似乎是并行发送的 JavaScript 在收到结果之前继续发送下一个请求 然而 结果似乎是一一返回的 而不是同时返回的 假设对 PHP 脚本的一次 POST 调用需
  • 如何将浮动操作按钮集成到带有工具栏的线性布局中

    我有以下列表视图 我想向其中添加浮动操作按钮
  • NSWindow 到底什么时候会变成圆角?

    我发现了几个类似的问题 但没有完全相同的问题 有些比有问题的操作系统更旧 有些正在做疯狂的事情 比如完全自定义窗口 我发现没有人提供有关如何使完全普通的窗口正常工作的说明 从 OS X Lion 开始 标准窗口都有圆角 不幸的是 我在我的应
  • 异常:未找到 Jupyter 命令 `jupyter-notebook`,Windows

    因此 在安装 VSCode 和 Python 3 7 4 64 位 之后 我真的很难让 python 交互式 工作 我已经在 VScode 中安装了 Python 扩展jupyter and jupyter lab但我不断收到错误 异常 J
  • PyCharm 社区版中的 中出现意外标记

    我是 PyCharm 的新手 但我逐渐喜欢上了它 我的屏幕上出现红色下划线错误是 意外的令牌 为什么 PyCharm 会显示它 我无法理解 当您没有在 Pycharm 的设置中启用 Django 时 通常会发生这种情况 要解决该问题 在 P
  • ASP.Net:在编辑和删除时从 GridView 获取 DataKey

    我正在使用一个GridView控件数据绑定到List从实用程序方法返回的对象的数量 这GridView控件将其中一列设置为其 DataKey 当一行是Selected 它会触发 Selected 事件处理程序 我可以使用myGridView
  • javascript 检测桌面触摸和鼠标支持

    触控设备应如何区分纯触控设备和带有鼠标的设备 就像今天的一些笔记本电脑 需要在应用程序中给予所有鼠标功能优先级 并且如果运行应用程序的设备仅支持触摸 则需要更改功能 如果触摸设备也有鼠标指针 逻辑建议应用程序应将该设备视为普通桌面 并且也可
  • array.map() 中花括号的含义[重复]

    这个问题在这里已经有答案了 我有一个 map 改变的函数isActive对象的属性值data大批 然而 用大括号包裹它会返回未定义的结果 而用括号包裹它或不包裹它会返回更新后的值 大括号用作箭头函数中的包装器 但它对于 map 的工作方式是
  • zod TypeError:无法读取未定义的属性(读取“_parse”)

    我有一个使用 Zod 的 Vite 库 我想解析配置 我的文件夹结构与配置对象结构类似 index ts文件始终导出其自己目录中的所有文件及其子目录中的所有内容 例如export from subDir 所以根文件导出 整个库 以下设置显示