如何使用旧版本的 ember 和 ember-light-table 解决 TypeError?

How can I resolve a TypeError using old version of ember and ember-light-table?

我在https://github.com/ericg-ember-questions/test_computed_sort

有测试项目

我通过执行以下操作来设置项目:

节点版本:v12.18.1 (npm v6.14.5)

  1. npm install --save-dev ember-cli@3.4
  2. ./node_modules/.bin/ember 新 test_computed_sort
  3. cd test_computed_sort/
  4. ./node_modules/.bin/ember 安装 ember-light-table@1.13.2
  5. ./node_modules/.bin/ember 生成组件 test-comp
  6. ./node_modules/.bin/ember 服务

application.hbs

{{test-comp}}

test-comp.hbs

Hello

{{#light-table}}
{{/light-table}}

如果我注释掉对 light-table 的引用,则不会生成错误。但是,有了它,我在控制台中看到:

media.js:15 Uncaught TypeError: decorator is not a function
    at media.js:15:1
    at Array.reduce (<anonymous>)
    at _applyDecoratedDescriptor (media.js:15:1)
    at Module.callback (media.js:240:1)
    at Module.exports (loader.js:106:1)
    at Module._reify (loader.js:143:1)
    at Module.reify (loader.js:130:1)
    at Module.exports (loader.js:104:1)
    at requireModule (loader.js:27:1)
    at Class._extractDefaultExport (index.js:432:1)

我该怎么做才能解决此错误,以便我可以在此项目中使用 ember-light-table

错误有点暗示这一点,但除非您使用的是现代 ember,否则它并没有真正意义——但您使用的是 3.4(感谢您提供该信息!!)

您的错误中的堆栈实际上非常有用,您可以通过以下方式找出问题所在。

我下载了您的复制存储库(感谢提供!复制对调试非常有帮助!)

我遇到了和你一样的错误:

这里的关键部分是 media.js 参考。 点进去我们看到:

ember-responsive/services/media 文件的编译版本正在使用装饰器 -- 您的应用程序中有某个版本的 ember-responsive,其中包含装饰器。

我在您的 package.json 中看到您指定的桤木版本:

    "ember-responsive": "^4.0.2",

此 v4 版本 ember-responsive 仅支持 ember 3.13 及更高版本。

有点在 ember-responsive github、https://github.com/freshbooks/ember-responsive/blob/v3.0.5/config/ember-try.js

周围闲逛

我看到 ember-responsive 的 v3 系列支持回到 Ember 2.12 -- 肯定在装饰器之前支持。

所以降级 ember-responsive 并重新启动应用程序会显示此错误:

"Assertion Failed: [ember-light-table] table must be an instance of Table"

此错误记录在此处:https://github.com/adopted-ember-addons/ember-light-table/issues/726

所以它看起来像是一些 API 使用问题。

如果您需要帮助解决这个问题,请随时 post 另一个问题。