问题标签 [safe-stack]

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.

0 投票
2 回答
327 浏览

f# - 如何在 Fable 中导入图像?

我已经有了所有的 webpack 加载器,所以我需要做的就是这个,但是在 F# 中:

这应该是一件容易的事,我只是迷失在文档中,我主要找到关于[<Import>]属性的信息,这似乎是为了别的东西......

0 投票
1 回答
232 浏览

f# - 如何在 SAFE-Stack 中正确强制使用 HTTPS?

根据土星文档,要在土星中拥有 HSTS,需要在force_ssl以下文件中指定application

这适用于 Web 的已部署版本,但它会破坏本地开发。服务器不会在它写入的日志中返回响应,仅此而已Request redirected to HTTPS

是否可以同时强制 SSL 并保持本地开发方便?

0 投票
6 回答
915 浏览

reactjs - Fable.React - 编辑输入字段将光标移动到文本末尾

我正在使用 SAFE 堆栈的 Elmish.Bridge 风格。

在视图的顶层,我创建了一个这样的输入字段:

当我通过在该字段的中间键入来编辑该字段的值时,模型会按预期更新,但光标也会移动到输入文本的末尾

我的模型有好几层,完全由可序列化的类型(基元、字符串、集合、记录和联合)组成。

我尝试在玩具应用程序中重现它(模型不那么复杂),但它在那里按预期工作 - 光标保持位置。

有没有办法确定光标在这些情况下移动的原因?

0 投票
1 回答
126 浏览

html - 将表示 HMTL 的字符串显示为实际 HTML,而不是 F# 的 Fable 应用程序中的字符串内容

正如标题所暗示的那样,我想显示一个表示一些有效 HTML 的字符串作为字符串表示的实际元素,而不是输出字符串内容。

示例:给定字符串 This <b>is</b> a <em>string</em> representing HTML,我想在显示器上看到:这一个表示 HTML的字符串

我问了其他地方并得到了一个关于unSafeInsideHTMLFable 绑定到的 React 指令的答案。
事情是我也在网上阅读了 React 的Fragment指令,据说它更安全。但是,我无法理解如何使用 Fable 中的Fragment指令。

那么,是否可以从 Fable中使用Fragment ?如果是这样,怎么做?

0 投票
0 回答
130 浏览

asp.net - 使用 Saturn 框架,我如何在特定请求之外获得对 Websockets 集线器的引用?

我正在为一个玩具问题构建一个应用程序,以了解有关 SAFE 的更多信息。我有一些在服务器端运行的后台进程,有时它们需要向连接的客户端发送不提示的消息。这意味着我需要从任何特定请求之外引用 SocketHub。

目前我有一个可变变量,我在加入频道时将值传递给:

但是,在我看来,应该有更好的方法来访问集线器——我就是想不通。

0 投票
0 回答
263 浏览

f# - 如何使用“onunload”事件向 SAFE Stack 中的服务器发送消息?

我有一个使用 SAFE 堆栈构建的应用程序,其中活动客户端在服务器端具有相应的对象。当用户关闭他们的浏览器窗口时,我希望向服务器发送一条消息以删除该对象。

我正在尝试像这样使用“onunload”事件:

我将其添加到订阅中:

消息以通常的 Elmish 方式处理,并通过 api 转发到服务器。但是,我发现消息很少到达服务器端。我可以做些什么来使它更可靠吗?还是有更好的替代方法?

0 投票
1 回答
434 浏览

asp.net-core - 如何在 Fable Elmish SPA 中处理从后端到身份验证提供程序的重定向

我有一个 AspNetCore 后端 api(在 F# 中带有 Giraffe),它使用 AzureAD 身份验证和 Microsoft.AspNetCore.Authentication.AzureAD.UI、有状态会话存储和仅 https cookie。

前端是使用 Fable 编译为 js 的 Elmish SPA。

如果我只是在 url 栏中输入我的后端的受保护端点,一切正常,如果尚未登录,我将被重定向到 login.microsoft 端点,带有 clientID 等等,成功登录后,原始请求完成,我得到受保护端点的响应。

但是,如果我尝试从 SPA 代码访问相同的端点,例如:使用 fetch 或 Fable.Remoting,如果未登录,后端仍会重定向,但重定向到 login.microsoft 的请求不再有效。使用 Fable.Remoting 有一个 CORS 标头,登录端点会拒绝该标头。如果我使用 nocors 发送 fetch,登录端点有 200 OK 响应,但没有响应正文(例如登录页面没有 html 代码),似乎什么也没发生。

我只是不知道在 SPA 方面应该如何处理,也找不到任何关于它的信息。如果从 Fable.Remoting 启动与从浏览器 url 栏启动,为什么后端会在重定向中包含 CORS 标头?没有响应主体的 fetch-ed 响应有什么问题?我可以只将 js 代码写入我的客户端,但甚至无法弄清楚如何在纯 js SPA 中处理它。

还在生产中尝试了整个过程,从等式中删除了 webpack devServer 代理,但一切都保持不变。

0 投票
2 回答
178 浏览

f# - 如何使用 Elmish 调试器解决编码器问题?

我有一个使用 websockets 在 SAFE-Stack 中构建的应用程序,或多或少遵循这里的方法:https ://github.com/CompositionalIT/safe-sockets

它工作正常,但 Elmish 调试器不喜欢此示例中的 WsSender 类型:

在浏览器控制台中给出以下错误消息:

ElmishDebuggerMessage

谁能告诉我如何解决这个问题?(假设它是可修复的并且我已正确诊断出问题。)谢谢。

0 投票
1 回答
293 浏览

asp.net-core - 如何在 saturn 应用程序中访问和使用用户机密

编辑:以下是对 Koenig Lear 答案的一些改编,以防其他人偶然发现这个问题:

为了向应用程序添加用户机密,我使用了此代码,其中使用的 IDconfig.AddUserSecrets是使用 .fsproj 添加到 Server.fsproj 的机密 ID dotnet user-secrets init

然后可以通过以下方式在路由器中使用秘密:

原始问题:

我正在努力思考如何访问用户机密,但我无法完全翻译microsoft 提供的示例

假设我让 Saturn 在 SAFE 堆栈环境中运行(在这种情况下很可能无关紧要)。我有一个 webApp,它接受一个连接字符串,然后使用提供的连接字符串处理请求以进行数据库访问:

和一个用户密码,其中包含我使用以下方式启动的连接字符串dotnet user-secrets set

和一个application使用路由器的:

我想做的是以某种方式提取用户密码并将其传递给路由器。我似乎不明白的是在哪里以及如何执行 ASP.NetCore 通常执行的依赖注入(请参阅通过Configuration APIMS Docs 示例中的用户密码配置的位置。)。

与我想做的非常接近的是示例中的这一部分

第一个问题是我找不到如何获取Configuration包含该GetConnectionString 方法的对象。但即使我能做到这一点,我也会通过monadservice_config中的操作来配置这一部分,对吧?application但是后来我无法将获得的连接字符串用于路由器,因为use_router 操作与它分开。

我在 netcoreapp/asp.netcore 3.1 上使用 Saturn 0.14.1。

任何形式的帮助将不胜感激!

0 投票
1 回答
803 浏览

webpack - HMR - 更新失败:SyntaxError: Unexpected token < in JSON at position 0

我正在使用 Elmish 应用程序。我只为索引页面设置了 SSR(服务器端渲染),因为我需要在应用程序启动时动态生成一些初始状态。由于热模块更换不起作用并且它抛出以下警告:

我知道 webpack-devserver 的配置是错误的,因为它onreadystatechange正在检索 html 中的索引页面,而不是 json 中的新应用程序文件(?)。但是阅读文档对我没有多大帮助,因为我不确定如何防止请求/en-EN/4b1807ffe818fe814be7.hot-update.json被代理到后端。

我怎样才能让 HRM 重新开始工作?

我的 webpack.config 看起来像这样:

我的服务器相关部分如下所示: