n8nのCode node後に前のデータを参照できないときの確認

Code node後の参照エラーで、現在の出力itemがどの入力から来たかを確認し、誤ったレコード参照を防ぐ。

AIものさし編集部

n8nのCode node後に前のノードを .item で参照できなくなった場合は、出力itemと入力itemの対応を確認します。エラーを消すためだけに .first() へ置き換えると、別の顧客行や注文行を参照するおそれがあります。

エラーを二つに分ける

n8nの公式資料は、対応情報が欠ける場合と、対応先が複数ある場合を分けています。参照先が別ブランチにある場合も確認対象です。エラー全文、参照式、n8nのバージョン、Code nodeの実行モード、入力・出力item数を記録します。n8n:Item linking errors(新しいタブで開く)

表は横にスクロールできます

症状確認すること
対応情報が欠けるどのノードから入力由来を追えなくなったか
複数のitemが一致する集約や結合で複数入力を一つにしたか
別ブランチの参照現在itemからそのノードへ対応を追える構造か

item数が同じでも順序が変われば、出力の0番目が入力の0番目とは限りません。Code node直前と直後だけでなく、参照先までの経路を確認します。

少数の架空itemで対応を書く

検証用に、顧客IDが異なる三行を用意します。各出力について「どの入力から作ったか」を表にして、並べ替え、絞り込み、分割、集約の有無を記します。業務IDは確認用に残し、n8n内部の対応情報と同一視しません。

表は横にスクロールできます

出力元の入力index業務ID変換
02C003並べ替え
10C001並べ替え
21C002並べ替え

この場合、出力indexをそのまま対応先として付け直すと誤ります。元の入力indexを変換前から保持する設計が必要です。

一対一の変換でpairedItemを保つ例

次は、All Itemsをまとめて処理するJavaScriptのCode nodeを想定した説明用例です。入力順序を変えずに一行ずつ新しいitemを返します。実際のn8n環境では未実行です。

const input = $input.all();
return input.map((item, inputIndex) => ({
  json: {
    customerId: item.json.customerId,
    reviewed: false,
  },
  pairedItem: inputIndex,
}));

公式資料は、新しいitemを返す際などに pairedItem を明示する方法を説明しています。この例のindexは、Code nodeへの入力配列の位置です。絞り込み後のindexや、顧客IDを代入する値ではありません。n8n:Preserving linking in the Code node(新しいタブで開く)

このコードをそのまま既存処理へ貼ると、元のJSON列やbinaryなどが失われる可能性があります。自分の処理で必要な出力を保持し、どの入力由来かを正しく付ける部分を見直してください。

複数入力を一つにした場合

集約した売上合計など、一つの出力が複数の入力からできる場合、前の顧客一件を .item で求める設計自体が曖昧です。必要なのが顧客ごとの値か、全件集計かを決め、集約前に必要列を持たせる、必要なitem集合を明示的に扱うなどの設計へ戻します。

位置指定で一件を取る方法は、対象の位置が意図として決まっている場合に限って検討します。「先頭に取れたから正しい」という確認では、顧客の取り違えを防げません。

修正後に確かめること

まず外部送信や更新ノードを実行しない検証用の流れで、入力IDと参照結果のIDを全行照合します。三行の順序変更、途中行の除外、一対多の分割、複数行の集約を、自分の処理に必要な範囲で試します。欠損や曖昧な対応がある場合に、別行で埋めず停止することも確認します。

AIものさしの判断

エラーが消えることより、参照先のレコードが正しいことを完了条件にします。この記事は公式仕様と架空例に基づく手順です。利用中のn8nの版と実行モードで検証し、成功を確認するまで実データの送信・更新へ進めないでください。

引用・データ出典

公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。

確認日:2026-10-19