我们在实时服务器上有一个coldfusion项目,在本地开发服务器上有一个相同的项目。这两个项目几乎相同,但开发服务器上正在开发的一些组件。两台服务器都具有相同的coldfusion版本(cf9)。
突然,我在实时项目的组件中遇到“变量未定义”错误。这个组件在开发项目中完全相同。但是,当与实时项目执行完全相同的代码时,dev项目不会抛出此错误。
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()。
更多信息:
此项目使用 coldspring 在applicationStart上加载一次组件。实时服务器启用了“请求中的缓存模板”,“组件缓存”和“保存类文件”。只需重新启动应用程序并不能解决问题。该组件已经重新编译。
答案 0 :(得分:0)
ColdFusion可能正在提供不相同的cfc的缓存版本。您是否已在服务器上保存已编译的组件?