重新编译组件后突然修复的Coldfusion错误

时间:2012-01-13 10:23:15

标签: coldfusion cfc coldspring

我们在实时服务器上有一个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上加载一次组件。实时服务器启用了“请求中的缓存模板”,“组件缓存”和“保存类文件”。只需重新启动应用程序并不能解决问题。该组件已经重新编译。

1 个答案:

答案 0 :(得分:0)

ColdFusion可能正在提供不相同的cfc的缓存版本。您是否已在服务器上保存已编译的组件?