我有一个React应用程序,它在使用npm start
时运行良好,但在运行npm run build
时由于以下错误而无法构建:
`Creating an optimized production build...
Failed to compile.
Attempted import error: './parseq-lang.js' does not contain a default export (imported as 'grammar').
import语句如下(您可以在此处看到完整的文件(:
import grammar from './parseq-lang.js';
正在导入的模块是从nearleyc
生成的代码。它的导出部分看起来是这样的(你可以在这里看到完整的文件——同样,这是生成的代码,所以如果可以避免的话,我宁愿不更改它(:
(function () {
[...]
if (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') {
module.exports = grammar;
} else {
window.grammar = grammar;
}
})();
有人知道可能发生的事情吗?或者有什么可以帮助我调试的指针吗?谢谢
似乎nearlyc
可以生成ES6模块,请参阅此处的源代码:https://github.com/kach/nearley/blob/6e24450f2b19b5b71557adf72ccd580f4e452b09/lib/generate.js#L143
根据";使用预处理器";在里面https://nearley.js.org/docs/parser您需要在语法文件的顶部放一行@preprocessor module
或@preprocessor esmodule
。
现在我决定修改生成代码中的导出。这里真正的解决方案似乎是更新nearleyc
以生成符合ES6的代码。