ライブサーバーに Coldfusion プロジェクトがあり、ローカル開発サーバーに同じプロジェクトがあります。どちらのプロジェクトもほぼ同じですが、開発サーバーで開発中のコンポーネントがいくつかあります。どちらのサーバーも同じ Coldfusion バージョン (cf9) です。
突然、ライブ プロジェクトのコンポーネントで「variable is undefined」エラーが発生します。このコンポーネントは、開発プロジェクトとまったく同じです。ただし、ライブ プロジェクトとまったく同じコードが実行された場合、開発プロジェクトはこのエラーをスローしません。
private void function updateRecordById(required struct properties) {
_updateRecord(arguments.properties, aliasFrom(this.name & "_id")&" = "&
arguments.properties.id);
}
public string function aliasFrom(required string column) {
var matchingKey = structFindValue(variables.aliases,arguments.column,"ONE");
return (arraylen(matchingKey)) ? matchingKey[1].key : arguments.column;
}
エラーは「Variable aliasFrom is undefined」でした (行 nr は上記のコード サンプルの 2 行目です)。( writeDump ("test"); を追加して) ライブ サーバーでコンポーネントを再コンパイルし、アプリケーションを再起動しただけで、エラーは修正されました。
ライブ サーバーが updateRecordById() をコンパイルしたように見えますが、aliasFrom() はコンパイルしていません。
- このエラーの原因は何ですか?
- これが再び起こらないようにするにはどうすればよいですか?
- 開発サーバーでまったく同じコードでこのエラーが発生しないのはなぜですか?
より詳しい情報:
このプロジェクトでは、 coldspringを使用して、applicationStart でコンポーネントを 1 回読み込みます。ライブ サーバーでは、「要求中のテンプレートのキャッシュ」、「コンポーネント キャッシュ」、および「クラス ファイルの保存」が有効になっています。アプリケーションを再起動するだけでは問題は解決しません。コンポーネントを再コンパイルする必要があります。