插件中的 Async/await:在开发实例中工作,在 Docker 实例中不工作

I get this error when installing a plugin in a docker instance:

Compressing: plugin-third-party-ea46d31326df4fb4ed1d79ef5ecad5179b0512d15492b09e348b67b027cced32.js
uglifyjs '/var/www/discourse/public/assets/_plugin-third-party-ea46d31326df4fb4ed1d79ef5ecad5179b0512d15492b09e348b67b027cced32.js' -p relative -c -m -o '/var/www/discourse/public/assets/plugin-third-party-ea46d31326df4fb4ed1d79ef5ecad5179b0512d15492b09e348b67b027cced32.js' --source-map-root '/assets' --source-map '/var/www/discourse/public/assets/plugin-third-party-ea46d31326df4fb4ed1d79ef5ecad5179b0512d15492b09e348b67b027cced32.js.map' --source-map-url '/assets/plugin-third-party-ea46d31326df4fb4ed1d79ef5ecad5179b0512d15492b09e348b67b027cced32.js.map'
Parse error at _plugin-third-party-ea46d31326df4fb4ed1d79ef5ecad5179b0512d15492b09e348b67b027cced32.js:637,7
	async function onEvent(container, event) {
	      ^
SyntaxError: Unexpected token: keyword (function)
    at JS_Parse_Error.get (eval at <anonymous> (/usr/lib/node_modules/uglify-js/tools/node.js:27:1), <anonymous>:86:23)
    at /usr/lib/node_modules/uglify-js/bin/uglifyjs:384:40
    at time_it (/usr/lib/node_modules/uglify-js/bin/uglifyjs:620:15)
    at /usr/lib/node_modules/uglify-js/bin/uglifyjs:345:9
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)

Removing async/await fixes the issue. It looks like some es6 code is sent to uglifyjs before conversion to es5.

The error doesn’t always occur. A few days ago, I retried installing several times and it finally succeeded. But now I’m stuck again.

Did you name your plugin file name.js.es6 ?

Nope, none of my plugin files are named name.js.es6.

Hence the problem, you need to name them with that extension.

My plugin has just installed correctly, at the 3rd attempt.

If you want it to compile properly, make sure they have a .js.es6 extension, then it will work everytime.

I am not even sure if we enabled async await in babel @eviltrout ? I certainly have never used it in the Discourse code base.

@Falco, if your question was about the extension of my files, then yes, I’m using .js.es6 everywhere.

We are not transpiling that. It probably works in the browser if you’re using an evergreen one, but we don’t support it yet.

We could benefit from it, I just haven’t had the time to enable it, make sure the perf is good, and start converting code.

Any news on this? Having it would be great.

We did start using this in tests, have not decided on our strategy yet for using it in production or not.

你在这方面取得了一些进展吗?

@eviltrout 已经开始了一项长期任务,推动我们转向使用 Ember CLI。这项工作的一部分应该会顺带解决这个问题。

我预计我们将在未来 8 个月内解决这个问题。

我也遇到了这个问题

我到处都在使用 name.js.es6。

这是否意味着我需要移除 async/await?

是的,正如已解释的那样,我们目前尚不支持 async/await。