【问题标题】:Error : Could not find the ColdFusion component or interface on Fw1 framework错误:在 Fw1 框架上找不到 ColdFusion 组件或接口
【发布时间】:2019-05-12 05:30:24
【问题描述】:

这周我只是试着回忆一下 Fw1 框架。但是,我遇到了 fw1 核心文件错误。下面的屏幕有我的文件夹结构,

在 lib 文件夹内,我还有一个名为 framework 的文件夹。框架文件夹也有 one.cfc 和 ioc.cfc 文件。现在,我正在尝试在浏览器中运行我的应用程序。它抛出错误。

找不到 ColdFusion 组件或接口 C:\ColdFusion2016\cfusion\wwwroot\try\Fw1Demo\framework\ioc.cfc

但是,在我的 Application.cfc 中,我扩展了 fw1 one.cfc 核心文件。

component extends="lib.framework.one" output="false" {
}

但是,我不确定为什么会引发错误。

【问题讨论】:

  • 1) 只需在 setupApplication() 中测试 Dump & abort 并检查 setApplication 是否调用。 2)如果它被正确调用,那么再次在你的 setupRequest() 中做一个测试转储。如果正确调用它,则 Framework one.cfc 中没有问题。确保您必须使用 setupApplication() 、 setupRequest() 方法而不是 OnApplicationStart() 和 OnRequestStart()。让我知道结果。
  • 而不是将文件放入lib/framework,直接放入framework
  • @JamesAMohler 是的。你说的对。我分析了framework core files ( one.cfc & ioc.cfc )。在这些文件中,提到了static path like framework.ioc。我找到了当我们使用不同的文件夹结构时它引发错误的确切原因。
  • 您应该写下确认这一点以及您是如何解决问题的。 OT:FW/1 做了各种好事。一旦你开始遵循它的模式,各种功能就会开始发生。
  • @JamesAMohler 我已经添加了我的修复程序。 :)

标签: coldfusion coldfusion-2016 fw1


【解决方案1】:

现在,我们可以将 fw1 框架核心文件放在不同的文件夹中。我们不需要遵循 fw1 提到的文件夹结构。我的意思是,framework/one.cfc & framework/ioc.cfc

但是,使用不同的文件夹结构需要更改framework/one.cfc 中的路径。在此文件中,它们用作指向 ioc.cfc 文件的静态路径。我们需要改变这条路径。

在上述问题中,我使用了lib/framework/one.cfc & lib/framework/ioc.cfc。所以,在one.cfc文件中,需要修改下面的代码,

var diComponent = 'lib.framework.ioc';

variables.framework.applicationKey = 'lib.framework.one';

默认情况下,上述变量具有以下值,

var diComponent = 'framework.ioc';

variables.framework.applicationKey = 'framework.one';

所以,在这个变量中需要更新我们的路径。

谢谢,

【讨论】:

  • 但是@jawahar。您不能直接更改核心功能。这不好。对 ?。想象一下,将来他们可能会在您的 diComponent 上添加一些改进/增强功能,这意味着您也可以更改该值。所以最好尝试遵循 FW1 建议的文件夹目录。这就是我们所说的框架。我再次建议不要直接更改该文件。
  • @Kannan.P 一些特殊情况,我们需要接触核心文件。例如,客户要求我们将所有这些类型的文件放在 lib 文件夹中。在那种情况下,我们可以解释什么是fw1框架,什么是fw1文件夹结构。但是,客户说,如果您将所有文件都放在 lib 中,那对我来说会很棒。所以,我们不能再与我们的客户争论。因为fw1有一个功能可以改变自己的文件夹结构。
  • 所以,作为开发人员,我们需要满足我们的客户。这是主要的关键点。如果我们没有选择改变手段,那么我们可以解释我们的观点。但是,fw1 也提供了更改其文件夹结构的机会。我的问题是,那他们为什么要提供这些功能?如果是强制手段,为什么他们要提供这些功能来改变路径?
  • 因为它是配置框架的约定。但是,可以像@sathish chelladurai 提到的那样使用而不是更改核心文件。而你说,如果我们直接换核心意味着,未来他们在双组分手段上增加了一些改进,那个时候我们也需要改变路径。但是,他们只是增加了改进。当然,他们并没有改变他们的路径(framework/ioc.cfc)。
  • 核心意味着所有者和贡献开发者只有权利改变核心功能。如果你想满足你的客户,你必须在 variables.framework 中编写自己的更改,正如 Sathis chelladurai 提到的那样。如果您更改您的 application.cfc,则只会影响该特定应用程序。但是,如果您更改核心,则每次 fw1 升级时都需要进行更多更改,如果升级与您的更改有关。希望你能理解。
【解决方案2】:

Fw1 是一个轻量级框架,它被称为约定优于配置。我们可以在Application.cfc中进行配置

据我所知,如果你想配置你不接触核心文件。只需将其添加到 Application.cfc

它就像默认的 Section、Item 和 reloadApplicationOnEveryRequest 设置一样

variables.framework = {
        defaultSection = 'dashboard',
        defaultItem = 'default',
        reloadApplicationOnEveryRequest = false
    };

对于您的场景,您应该在 Application.cfc 中添加类似,

variables.framework = { applicationKey = 'lib.framework.one'; }

仅适用于特定于应用程序的配置。我没有尝试过这样的配置,但我们可以进行这样的配置。

【讨论】:

    【解决方案3】:

    请尝试以下操作,而不是更改核心文件。

    1. 使用名为“framework”的 CF 管理界面为框架文件夹创建映射
    2. 在 Application.cfc 文件中添加/更新它variables.framework = {diComponent = "framework.ioc"}

    这样,您不会更改核心文件,仍然拥有您想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多