在Next.js中导入ES模块ERR_REQUIRE_ESM

ky在 Next.js 项目中尝试使用时遇到了这个错误:

错误 [ERR_REQUIRE_ESM]:必须使用导入来加载 ES 模块:/foo/node_modules/ky/index.js

我认为问题在于 Webpack(或 Babel)正在将所有imports转换为require()s 但它ky是一个纯 ES 模块。

ky在使用它之前通过动态导入让它工作,但它既不优雅也不高效。

const handleFormSubmit = async (event) => {
  const ky = (await import("ky")).default;

  const response = await ky
    .get('http://localhost/api/foo')
    .json();
};

有什么建议?

回答

由于ky是作为 ESM 导出的,因此您可以使用next-transpile-modulesin进行转译next.config.js

// next.config.js
const withTM = require('next-transpile-modules')(['ky']);

module.exports = withTM(/* your Next.js config */);


以上是在Next.js中导入ES模块ERR_REQUIRE_ESM的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>