Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

TS SDK: failed procedure calls reject with a bare string instead of an Error

オープン 初心者向け
#6,288 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
82/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
typescript
領域
devtools

調査の方向性

crates/bindings-typescript/src/sdk/db_connection_impl.ts から始めてください。#callProcedureWithEncodedName と #callProcedureGeneric のプロシージャコールバックで、失敗分岐が生の result.value 文字列で reject しています。同じファイル内のリデューサーのパスと比較してください。リデューサーのパスは値を Error のサブクラスでラップしています。両方のプロシージャパスが同じメッセージを持つ Error で reject するようになり、失敗したプロシージャ呼び出しに対する Jest の rejects.toThrow チェックが通れば完了です。

索引モデルが issue の本文から書いたものです。

説明

Version: spacetimedb npm 2.11.0 and 2.12.0; still present on master (1b67ca3).

Where: crates/bindings-typescript/src/sdk/db_connection_impl.ts, the procedure callbacks in #callProcedureWithEncodedName and #callProcedureGeneric:

if (result.tag === 'Ok') {
  resolve(result.value);
} else {
  reject(result.value); // a plain string
}

Reducer calls in the same file reject with new InternalError(result.value) (or SenderError), so await conn.reducers.x(...) always rejects with an Error, but await conn.procedures.x(...) rejects with a bare string when the host fails the call (for example invalid arguments for procedure ...: data too short ... after a module republish changes a parameter type).

Effect:

  • No stack trace, and error instanceof Error checks treat it as unknown.
  • Jest's await expect(p).rejects.toThrow(...) reports "Received function did not throw" for a rejected procedure call.

Suggested fix: reject with new InternalError(result.value) in both procedure callbacks, matching the reducer path.

主要言語
Rust
スター
25.3k
フォーク
1.1k
平均マージ
3日 22時間
マージ済み PR(30日)
61

環境構築

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

clockworklabs/SpacetimeDB のほかの issue

clockworklabs/SpacetimeDB の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。