问题标签 [mirage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
module - 将模块传递给其他模块
我正在尝试将 Irmin 与 MirageOS 一起使用,并且我正在努力处理所有这些模块。我查看了 Canopy 的来源,试图弄清楚应该如何使用 Irmin,我有这个:
从开始功能,我可以很好地使用 Store,设置并阅读 repo .. 我如何传递 Store ?由于所有这些类型都依赖于 start 的参数,我不能(或不知道如何)在其他任何地方定义这些模块,并且我在其他任何地方传递或定义 Store 的所有尝试都失败了,因为构造函数会逃避它们范围。我确实设法创建了自己的 store.ml 文件(就像在 Canopy 中一样),但它只是将问题转移到一个新模块,我仍然不知道如何传递它。
在树冠中,他们似乎只从 start 函数中使用 Store 模块,这对他们来说很好,但不是我想做的。
我正在尝试使用 Irmin,但我认为这不是 Irmin 问题,我可能只是对模块系统在 ocaml 中的工作方式非常错误。当我尝试将它传递给另一个函数或模块时,我最终会遇到错误,例如
这似乎合乎逻辑,但我不知道如何解决这个问题。
谢谢
ocaml - 在 mirageos 中使用 C 库
我需要在 mirageos 项目中做 U2F,据我所知,它没有 ocaml 实现。我在博客上阅读了这篇文章,听起来应该可以使用 yubico 提供的 C 库来实现这一点,但不幸的是,这篇文章并没有真正解释如何在 mirage 中编译它。
有没有人知道我可以看看的海市蜃楼项目,看看它是如何工作的,或者一篇解释它的文章?
ocaml - 如何处理所有这些函子
我来这里是为了别的事情,但试图写下我的问题,我意识到我做这件事是不可能的。我已经使用 mirage 和 irmin 有一段时间了,只要所有代码都保留在 Main 模块中,一切都很好。但是,当然,它很快就变成了一个大得离谱的文件,并且试图将它拆分为模块让我对逃避其范围的类型和诸如此类的东西感到抓狂。
除了将控制台从 start 传递给其他一些函数之外,我还必须将这些其他函数放在一个仿函数中,该仿函数将采用Mirage_types_lwt.CONSOLE
实际的控制台变量,这意味着一切最终都在从 start 实例化的仿函数中并在一个无法阅读的混乱代码。
我在制作一个巨大的丑陋模块来轻松存储和传递所有这些(从常规代码中“隔离”需要这种混乱的部分)时遇到问题,我不知道如何声明这样的东西:
(Repo 是我为包裹 Irmin 的函子而制作的一个模块)。这显然行不通,我尝试了很多语法,我猜这是不可能的,这意味着我做错了什么?
我希望以正确的方式以干净的方式处理所有这些函子和类型的建议,我如何传递控制台或管道之类的东西,而不必为了传递它而对 Main 模块中的所有内容进行函数化和实例化之后?
ocaml - 如何使用 mirage-channel 中的 pp_write_error
我正在使用mirage-channel并且 Channel.flush 返回一个(unit, Channel.write_error) Result.result
. 我不知道如何将 Channel.write_error 转换为字符串,似乎有一个pp_write_error
,但我只是不知道如何使用它。谢谢
xml - 从收藏和社区中删除新闻、描述和图像
如何从 dspace 的主集合和集合视图中删除新闻、描述和图像。要编辑的文件有哪些?
javascript - Ember.js ajax POST请求不通过海市蜃楼
我正在为我的 Ember 应用程序中的一个组件编写一些测试,该组件对我的服务器 API 执行一个 ajax POST 请求,该请求将返回一个文件位置的字符串。
我在mirage/config.js
文件中添加了一个在执行 ajax 请求时应该使用的路由。
当我运行测试时,我可以在网络选项卡和控制台中看到 ajax 请求正在尝试在我的本地主机上执行,但出现连接被拒绝错误。
POST http://localhost:8000/foobar net::ERR_CONNECTION_REFUSED
.
将调试器放入mirage/config.js
文件中时,它并没有停在那里,而且似乎mirage/config.js
完全忽略了我的路线。
URL 和命名空间都在配置文件中设置。
当我在 localhost 上运行我的应用程序并点击此端点时,它正确地通过了 Mirage。但它在测试期间不使用海市蜃楼。
发出 ajax 请求的代码。
这是通过单击按钮完成的,我从集成测试中“单击”。
我可以做些什么来进一步测试并找出为什么请求没有通过海市蜃楼?
ocaml - 将 lwt.t 代码放入 Ocaml 中用于 mirage os 的无限循环
我有以下从mirageOS github repo修改的代码块:
此代码从名为“secret”的文件中读取数据并输出一次。我想不断地读取文件并从中输出,并在两者之间进行睡眠。
用例是这样的:当这个程序运行时,我会secret
用其他进程更新文件,所以我想看看输出的变化。
我试过什么?
我试图将最后一条语句放在 while 循环中
但它给出了错误This expression has type unit Lwt.t but an expression was expected to type unit 因为它位于 while 循环的主体中。
我只知道 lwt 是一个线程库,但我不是 ocaml 开发人员,也不想成为其中的一员,(我对 MirageOS 很感兴趣),所以我找不到编写它的函数语法。
vue.js - 使用 Vue 和 Cypress 进行测试时出现 Mirage 未定义错误(未定义路由)
我在 Vue CLI 应用程序中运行了 Cypress,最近添加了 Mirage 来扩展我的数据库的模拟。我按照Mirage 的快速入门教程在 Cypress 中使用它,现在我正在尝试重新编写我的登录测试。应用程序中的登录与对 API 端点 /oauth/token 的 POST 请求一起使用,但在 Cypress/Mirage 中它失败了
似乎来自 server.js 中的 routes() 挂钩的路由未注册到服务器:
在规范文件的 beforeEach 钩子中,我调用了服务器函数:
而且我还在教程中将此块添加到 cypress/support/index.js 中:
我将此块添加到 Vue 的 main.js 中:
如果我将 main.js 中的环境“测试”更改为“开发”,则它不会产生影响。
有没有办法在服务器运行时的任何时候查看哪些路由注册到我的服务器?在我的规范中调试服务器时,服务器的路由属性长度为0。我是否在错误的时间或地点定义了我的路由?
更新:我发现当我按照此处所述在 Vue 的 main.js 中创建服务器时,我可以在本地 Web 应用程序中使用有效的 Mirage 路由,而不是使用赛普拉斯框架。所以现在我认为路由定义很好,问题一定在赛普拉斯请求拦截的代码中。
javascript - 如何在 Mirage js 中播种具有多态一对一关系的模型?
这只是一个示例,我知道您通常会有多个评论,但是为了这个示例,假设我们有
以下型号:
和以下工厂:
现在,当尝试使用以下内容播种服务器时:
它确实播种了它,但是当检查console.log(server.db.dump());
可评论为空时commentableId: null
...。
为什么?
编辑:
这是一个棘手的问题。我变了
至:
只是看看是否commentable
部分导致了问题。这次我得到了一个不同的错误:
Mirage: You're using the association() helper on your comment factory for blogPost, which is a polymorphic relationship. This is not currently supported."
因此,目前无法association()
在多态关系上使用。我希望这在文档中宣布...
尽管如此,即使没有速记,我也找不到播种的方法association()
。
graphql - Mirage 需要用于嵌套数据播种的数组
我正在使用 mirage 设置前端模拟 graphql 服务器。我遇到一个奇怪的问题,除非它在数组中,否则我无法使用嵌套数据为数据库播种。
我想要的架构如下:
每个人都由一个 id 对象和一个 name 对象组成。
我尝试了几种不同的方法来为我的数据库播种
我也试过
如果我更改我的架构,以便 Person 上的 name 字段是一个数组
我可以为我的数据库播种:
但是,这不是所需的架构。我真的很想弄清楚为什么我不能用 Name 对象为我的数据库播种。