# Prettier 报错，@discourseComputed 不能用于装饰字面量属性

**URL:** <https://meta.discourse.org/t/prettier-complains-that-discoursecomputed-cannot-be-used-to-decorate-literal-properties/271141>\
**Category:** Development\
**Created:** [2023年七月10日 17:35 UTC](https://meta.discourse.org/t/prettier-complains-that-discoursecomputed-cannot-be-used-to-decorate-literal-properties/271141 "2023-07-10T17:35:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2023年七月10日 17:35 UTC](https://meta.discourse.org/t/prettier-complains-that-discoursecomputed-cannot-be-used-to-decorate-literal-properties/271141/1 "2023-07-10T17:35:46Z")

</div>

我不明白为什么 prettier 对以下代码不满意。错误是“SyntaxError: Decorators cannot be used to decorate object literal properties. (9:3)”

> <https://github.com/literatecomputing/discourse-radiant-member/blob/main/assets/javascripts/discourse/components/radiant-info.js.es6#L9>

我在其他地方有完全相同的结构，在我看来。 😿

编辑：不知何故，这似乎已经开始奏效了。我马上删除它。但我不能。

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2025年四月13日 17:15 UTC](https://meta.discourse.org/t/prettier-complains-that-discoursecomputed-cannot-be-used-to-decorate-literal-properties/271141/2 "2025-04-13T17:15:09Z")

</div>

我在不同的插件上针对 `@action`、`@on` 和 `@discourseComputed` 再次遇到同样的错误。我曾以为是 prettier 配置的问题，但我只是从 `discourse-plugin-skeleton` 复制了它。

---

<div class="post-metadata">

**Author:** ![Arkshine](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arkshine/32/298682_2.png) [@Arkshine](https://meta.discourse.org/u/Arkshine)\
**Post date:** [2025年四月13日 18:32 UTC](https://meta.discourse.org/t/prettier-complains-that-discoursecomputed-cannot-be-used-to-decorate-literal-properties/271141/3 "2025-04-13T18:32:34Z")

</div>

该插件是否仍在使用旧的 `.extend({})` 语法？

> [@Moving to JS native class syntax in themes and plugins](https://meta.discourse.org/t/moving-to-js-native-class-syntax-in-themes-and-plugins/356588):
>
> Over the last few years, we’ve been moving away from Ember’s legacy .extend({ ... }) syntax and towards native-class syntax like class extends Foo {...}. While the legacy syntax is technically still supported, modern JS tooling including IDEs, and Prettier 3.0, do not support decorators in the legacy object-literal-based syntaxes. In the latest version of our recommended linting config, you’ll see these errors when using legacy syntax: ESLint: error Native JS classes should be used instead of…

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2025年四月13日 18:36 UTC](https://meta.discourse.org/t/prettier-complains-that-discoursecomputed-cannot-be-used-to-decorate-literal-properties/271141/4 "2025-04-13T18:36:53Z")

</div>

太棒了！

谢谢！我刚弄明白了，现在正试图把所有东西都转换过来……哦，等等……

不是吧。

> [@david](#):
>
> 大部分工作都可以使用 [ember-native-class-codemod](https://github.com/ember-codemods/ember-native-class-codemod) 来完成。在你的主题/插件仓库内运行：
> 
> ```plaintext
> NO_TELEMETRY=true npx ember-native-class-codemod@4.1.1 --no-classic-decorator **/*.js
> 
> ```

我一直在尝试让 `mass-pr` 来帮忙，但它一直不太……有帮助。我想我需要再多尝试一下。

非常感谢！！

我以为我一直在关注那些话题，但我想我错过了或者没理解那个。

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2025年五月13日 18:37 UTC](https://meta.discourse.org/t/prettier-complains-that-discoursecomputed-cannot-be-used-to-decorate-literal-properties/271141/5 "2025-05-13T18:37:32Z")

</div>

此主题在上次回复后 30 天自动关闭。不再允许回复。
