我们在实时服务器上有一个coldfusion项目,在本地开发服务器上有相同的项目。这两个项目几乎相同,但开发服务器上正在开发一些组件。两台服务器具有相同的冷融合版本 (cf9)。
突然,我在实时项目的组件中收到“变量未定义”错误。该组件在开发项目中完全相同。但是,当执行与实时项目完全相同的代码时,开发项目不会引发此错误。
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;
}
错误是“变量 aliasFrom 未定义”(第 nr 行是上面代码示例中的第二行)。在活动服务器上简单地重新编译组件(通过添加 writeDump("test");)并重新启动应用程序后,错误得到修复。
看起来实时服务器编译了 updateRecordById(),但没有编译 aliasFrom()。
- 什么可能导致此错误?
- 我怎样才能防止这种情况再次发生?
- 为什么我在开发服务器上没有以完全相同的代码出现此错误?
更多信息:
该项目使用冷泉在 applicationStart 加载组件一次。实时服务器启用了“请求中的缓存模板”、“组件缓存”和“保存类文件”。简单地重新启动应用程序并不能解决问题。该组件已被重新编译。