【发布时间】:2018-09-11 19:12:51
【问题描述】:
我有一个使用 Flow 的 node.js 应用程序。为了摆脱 Flow 语法,我使用了 babel:
{
"presets": ["env", "flow"],
"plugins": [
"transform-flow-strip-types"
]
}
它可以工作,但问题是使用“instanceof”运算符。我像这样扩展了标准错误构造函数:
/* @flow */
class BadRequestError extends Error {
constructor(message:string) {
super(message);
}
}
class InvalidRequestBodyError extends Error {
constructor(message:string) {
super(message);
}
}
class UnauthorizedError extends Error {
constructor(message:string) {
super(message);
}
}
class ExpiredResourceError extends Error {
constructor(message:string) {
super(message);
}
}
class InternalServerError extends Error {
constructor(message:string) {
super(message);
}
}
class ResourceNotFoundError extends Error {
constructor(message:string) {
super(message);
}
}
module.exports = {
BadRequestError,
InvalidRequestBodyError,
UnauthorizedError,
ExpiredResourceError,
InternalServerError,
ResourceNotFoundError
};
在 Node.js 中,它可以工作。但是在转译之后,instanceof 不再起作用,因为 Classes 转换为 Constructors。
有没有办法预防?
使用 babel-cli@6.26.0 和 node@8.9.0,这是我使用的命令行:
$ node_modules/.bin/babel ./src -d ./dist
【问题讨论】:
标签: node.js ecmascript-6 babeljs transpiler