无法将非箭头函数转换为函数表达式。 React/Preact 构建失败
Cannot convert non-arrow function to a function expression. React/Preact build fail
我正在构建一个技术上很好的 React 应用程序,但在构建时它在当前代码上失败了:
这就是“帮手 class”的样子:
class DuplicateChecker {
hasDuplicates = async () => {
const checkFirstPage = await this.isDuplicateFoundOnFirst();
...etc
它被导入到组件中并用于帮助检查内容
这是错误输出
Cannot convert non-arrow function to a function expression.
14 | }
15 |
> 16 | hasDuplicates = async () => {
| ^
17 | const checkFirstPage = await this.isDuplicateFoundOnFirst();
18 |
我的 .babelrc 如下所示:
{
"presets": [
"preact-cli/babel"
],
"plugins": [
"@quickbaseoss/babel-plugin-styled-components-css-namespace",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-arrow-functions",
"babel-plugin-styled-components"
]
}
还有一次 运行 构建失败,不确定原因,因为它应该正确编译代码
此语法应该有效:
class DuplicateChecker {
async hasDuplicates () {
// placeholder code:
return Math.random() < 0.5;
}
}
// Use:
(async () => {
const dc = new DuplicateChecker();
const duplicatesFound = await dc.hasDuplicates();
console.log(duplicatesFound);
})();
或者,由于它不是 TypeScript(根据您的问题),您可以直接在构造函数中分配它,如下所示:
class DuplicateChecker {
constructor () {
this.hasDuplicates = async () => {
// placeholder code:
return Math.random() < 0.5;
};
}
}
编辑:另一种语法:
class DuplicateChecker {
hasDuplicates = async function () {
// placeholder code:
return Math.random() < 0.5;
};
}
已解决,这里是解决方法:
感谢https://github.com/rschristian
问题出在 .babelrc 文件中,所以我删除了它并在 preact.config.js[=25= 中添加了我的 babel 插件] 如下:
export default (config, env, helpers) => {
const { rule } = helpers.getLoadersByName(config, 'babel')[0];
const babelConfig = rule.options;
babelConfig.plugins.push(
'@quickbaseoss/babel-plugin-styled-components-css-namespace',
'babel-plugin-styled-components'
);
}
此更改后,构建可以正常使用原始语法。
希望对大家有帮助
我正在构建一个技术上很好的 React 应用程序,但在构建时它在当前代码上失败了:
这就是“帮手 class”的样子:
class DuplicateChecker {
hasDuplicates = async () => {
const checkFirstPage = await this.isDuplicateFoundOnFirst();
...etc
它被导入到组件中并用于帮助检查内容
这是错误输出
Cannot convert non-arrow function to a function expression.
14 | }
15 |
> 16 | hasDuplicates = async () => {
| ^
17 | const checkFirstPage = await this.isDuplicateFoundOnFirst();
18 |
我的 .babelrc 如下所示:
{
"presets": [
"preact-cli/babel"
],
"plugins": [
"@quickbaseoss/babel-plugin-styled-components-css-namespace",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-arrow-functions",
"babel-plugin-styled-components"
]
}
还有一次 运行 构建失败,不确定原因,因为它应该正确编译代码
此语法应该有效:
class DuplicateChecker {
async hasDuplicates () {
// placeholder code:
return Math.random() < 0.5;
}
}
// Use:
(async () => {
const dc = new DuplicateChecker();
const duplicatesFound = await dc.hasDuplicates();
console.log(duplicatesFound);
})();
或者,由于它不是 TypeScript(根据您的问题),您可以直接在构造函数中分配它,如下所示:
class DuplicateChecker {
constructor () {
this.hasDuplicates = async () => {
// placeholder code:
return Math.random() < 0.5;
};
}
}
编辑:另一种语法:
class DuplicateChecker {
hasDuplicates = async function () {
// placeholder code:
return Math.random() < 0.5;
};
}
已解决,这里是解决方法:
感谢https://github.com/rschristian
问题出在 .babelrc 文件中,所以我删除了它并在 preact.config.js[=25= 中添加了我的 babel 插件] 如下:
export default (config, env, helpers) => {
const { rule } = helpers.getLoadersByName(config, 'babel')[0];
const babelConfig = rule.options;
babelConfig.plugins.push(
'@quickbaseoss/babel-plugin-styled-components-css-namespace',
'babel-plugin-styled-components'
);
}
此更改后,构建可以正常使用原始语法。
希望对大家有帮助