小编dev*_*leo的帖子

Discord.js 指南:Typescript 中的“Client<boolean>”类型上不存在属性“commands”

node:v16.11.0 "discord.js": "^13.2.0"

我正在设置一个示例 Discord.js 机器人。

本指南中,我要添加这一行:

client.commands = new Collection();

Typescript 然后抱怨:Property 'commands' does not exist on type 'Client<boolean>'

这个答案似乎和我想要的一脉相承。但是我仍然遇到一些问题。如果我添加 adeclare module "discord.js"并声明新类型,它似乎不会扩展现有类型,而是会覆盖它。当我这样做时,它不知道Collection我的自定义类型文件中的 a 是什么,因为这是新的 Discord.js 库的自定义内容。我不禁觉得官方指南不应该要求这样做。

我想知道是否有其他人制作了 typescript Discord 机器人并找到了解决此问题的更新解决方案。

感谢您的时间。

typescript discord discord.js

7
推荐指数
1
解决办法
7594
查看次数

VueJS、Typescript 和 VSCode -“相对导入路径需要在 EcmaScript 导入中显式文件扩展名...”

我有一个使用 TypeScript 构建的服务器端渲染的 VueJS 应用程序。应用程序构建得很好,但 VSCode 在解析智能感知的导入路径时遇到了麻烦,从表面上看似乎没有办法解决它。我需要一些帮助。

由于该应用程序是通过vite-plugin-sr在服务器端呈现的,这意味着该应用程序是通用的,并且在任何地方都使用 ESM“导入”样式,即使在服务器端代码中也是如此。它同时具有 commonjs 和 ESM 组件。我使用 vite 构建应用程序,然后使用 ts-node 实际运行它。

tsconfig.json

"compilerOptions": {
  "target": "ES2020",
  "module: "ES2020",
  "moduleResolution": "Node16"
}
...
"ts-node": {
  "esm": true
}
Run Code Online (Sandbox Code Playgroud)

在我的 package.json 中,我必须将type: module整个应用程序设置为像 ESM 一样处理。这就是 VSCode 的主要问题所在。type: module要求在导入路径中手动声明扩展。import { foo } from "./foo.js"。但如果我包括.js或 . ts在导入中,它不再构建,因为这些扩展并不总是存在。但是,如果我再次删除type: module以恢复 VSCode 的智能感知,由于 import 语句,它不再构建。

我被困住了吗?

typescript vue.js vite vite-plugin-ssr

5
推荐指数
1
解决办法
3444
查看次数

Ruby on Rails:表单提交时“您想要的更改被拒绝”

ruby 3.0.1 rails 6.1.2 'devise', '~> 4.7', '>= 4.7.3'

我的处境非常不寻常。我正在将 Rails 安装从一台服务器迁移到另一台服务器。我相信我已经完成了大约 95%,刚刚恢复了生产数据库。

但是,任何涉及表单提交的操作(包括用户注册和登录)都会显示错误页面:

The change you wanted was rejected.

Maybe you tried to change something you didn't have access to.
Run Code Online (Sandbox Code Playgroud)

服务器日志给了我一些更有用的东西:

Completed 422 Unprocessable Entity in 2ms (Allocations: 433)
FATAL -- ActionController::InvalidAuthenticityToken
Run Code Online (Sandbox Code Playgroud)

这让我很困惑。因为我确实重新生成了master.key和credentials.yml.enc,并通过环境变量使master.key的内容可用RAILS_MASTER_KEY。这意味着表单具有适当的<input type="hidden" name="authenticity_token" value="<removed for stack_overflow>">包含功能以防止跨站点脚本攻击。

我认为这与会话没有任何关系,因为甚至用户注册也会受此影响。我正在使用 Devise 进行身份验证。

但是……现在我碰壁了。从这里无处可去。有谁知道出了什么问题吗?

更新1

添加skip_before_action :verify_authenticity_token确实让我跳过了这个问题。我对此解决方案感到不满意。

更新2

我有这些元标签。

<%= csrf_meta_tags %>
<%= csp_meta_tag %>
Run Code Online (Sandbox Code Playgroud)

ruby authentication ruby-on-rails

4
推荐指数
1
解决办法
3435
查看次数

调试 Elixir 流

我是 Elixir 的新手,我想学习如何更好地调试Streams

在我的工作中,对大型数据集执行操作是很常见的。这意味着在最终操作(通常是Enum.sum().

但不幸的是,这意味着几个调用看起来难以辨认,因为它们由几个未记录的函数组成Stream.map。(我们目前正在解决的问题)。我想查看数据从一个流传递到另一个流时的状态以进行调试。这通常是如何实现的?

例子:

SomeModule.some_large_call_that_returns_a_stream()
|> Stream.map(some_huge_hard_to_read_thing)
|> Stream.map(some_huge_hard_to_read_thing)
|> Stream.map(some_huge_hard_to_read_thing)
|> Enum.sum()

Run Code Online (Sandbox Code Playgroud)

查看结果很难进行调试,尤其是在Enum.sum()返回无值或返回 0 的情况下。

有什么建议么?而且调试器目前对我来说不可用。

elixir

1
推荐指数
1
解决办法
365
查看次数