1

我正在尝试将这两者都包含knockoutknockout-projectionsBrowserify 的项目中。我正在使用browserify-shim将它们绑定在一起。

不幸的是,knockout-projections代码在需要时失败knockout,无论是编译时错误还是运行时错误——取决于 shim 的设置。

为了说明这个问题,我建立了一个 github 存储库:brianmhunt/bshim-ko-testcase

4

1 回答 1

1

@brianmhunt,browserify 仍然不是问题。

您对 repo 的最新更改通过 bower安装了淘汰赛淘汰赛投影。那也行。

但是,每个 bower 组件也有一个 package.json。这也不是问题,但是knockout-projections中的 package.json 文件也将敲除指定为依赖项。

在您自己的 package.json 中的“浏览器”设置和在其代码中调用“require('knockout')”的敲除投影之间,在这种情况下它有点像 catch-22。

几个解决方法:

  • 删除knockout-projections目录下的package.json文件
  • 在knockout-projections目录中运行“npm install” (请参阅​​下面的问题)

替代方案:(通过 npm 安装):

{
  "name": "bshim-ko-test",
  "version": "0.0.3",
  "repository": "https://github.com/brianmhunt/bshim-ko-testcase",
  "browser": {
    "koproj": "knockout-projections"
  },
  "main": "./test.js",
  "dependencies" : {
    "knockout" : "~3.0.0",
    "knockout-projections" : "SteveSanderson/knockout-projections"
  }
}

现在您的步骤将是:

  • git 克隆<repository>
  • npm install browserify -g
  • cd<repository>和“npm install”
  • browserify test.js -o bundle.js

陷阱:

  • 请小心执行上述第二种解决方法或替代方法。如果您的 Knockout 版本不匹配,您将在 bundle.js 中获得两个 Knockout 副本。绝对不是你所期望的。
  • Knockout 和 KO Projections 中的 package.json 文件指向调试文件(未缩小)这将使您的 bundle.js 变得非常大。
于 2014-06-22T06:28:15.367 回答