无法在 Node/BabelJS 应用程序中使用装饰器
Cannot use decorators in Node/BabelJS application
我有一个 Node 应用程序,它指定带有转换选项的 babel 并在主文件中注册,如下所示:
require('babel').transform('code', { stage: 1 });
require('babel/register')({ ignore: false });
require('../src/index');
允许我在 ../src/index
和所有后续文件中使用 ES6,但似乎不允许我使用装饰器,因为它应该通过声明 1 级转换来使用。我得到的是语法错误。为什么这不启用装饰器支持?我尝试使用的实际装饰器是:
@test1
test Class() {
constructor() {
this.test = 'test';
}
}
function test1(obj) {
obj.test1 = 'test1';
}
这不是您指定选项的方式,首先喜欢什么都不做。它编译 JavaScript 代码 code
并且不对编译结果执行任何操作。
require('babel/register')({
ignore: false,
stage: 1
});
require('../src/index');
通常 ignore: false
也不是一个好主意,因为有些文件应该被忽略。
更新
如果您使用的是 Babel 6,您需要下载 babel-plugin-transform-decorators-legacy
而不是启用 stage: 1
。
值得注意的是,最新版本的 babel (v6)(超过 1 个月)不支持装饰器,babeljs 团队已经确定他们不认为装饰器是优先修复的 -
https://twitter.com/sebmck/status/661501967412301824
正如@jdanyow 在其他答案中提到的,您可以跟踪该问题 here 但请注意,如果您选择使用 Babeljs v6,则之前版本的功能在目前已发布的 v6 中已损坏.
正如@loganfsmyth 在评论中指出的那样,有一个可用的插件 babel-plugin-transform-decorators-legacy 虽然它确实提到在实现方面存在差异,但我不知道它们。
我有一个 Node 应用程序,它指定带有转换选项的 babel 并在主文件中注册,如下所示:
require('babel').transform('code', { stage: 1 });
require('babel/register')({ ignore: false });
require('../src/index');
允许我在 ../src/index
和所有后续文件中使用 ES6,但似乎不允许我使用装饰器,因为它应该通过声明 1 级转换来使用。我得到的是语法错误。为什么这不启用装饰器支持?我尝试使用的实际装饰器是:
@test1
test Class() {
constructor() {
this.test = 'test';
}
}
function test1(obj) {
obj.test1 = 'test1';
}
这不是您指定选项的方式,首先喜欢什么都不做。它编译 JavaScript 代码 code
并且不对编译结果执行任何操作。
require('babel/register')({
ignore: false,
stage: 1
});
require('../src/index');
通常 ignore: false
也不是一个好主意,因为有些文件应该被忽略。
更新
如果您使用的是 Babel 6,您需要下载 babel-plugin-transform-decorators-legacy
而不是启用 stage: 1
。
值得注意的是,最新版本的 babel (v6)(超过 1 个月)不支持装饰器,babeljs 团队已经确定他们不认为装饰器是优先修复的 -
https://twitter.com/sebmck/status/661501967412301824
正如@jdanyow 在其他答案中提到的,您可以跟踪该问题 here 但请注意,如果您选择使用 Babeljs v6,则之前版本的功能在目前已发布的 v6 中已损坏.
正如@loganfsmyth 在评论中指出的那样,有一个可用的插件 babel-plugin-transform-decorators-legacy 虽然它确实提到在实现方面存在差异,但我不知道它们。