1

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

4

1 回答 1

0

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

于 2012-01-13T10:50:55.177 回答