javascript 使用Vite构建React应用程序时,导入“倒计时”模块会导致错误

e5njpo68  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(226)

我在我的React应用程序中使用'countdown'模块,我像这样导入:

import countdown from 'countdown';

当我使用Vite在开发模式下运行应用程序时,一切正常。然而,当我尝试构建应用程序时,我得到以下错误:

RollupError: "default" is not exported by "node_modules/.pnpm/countdown@2.6.0/node_modules/countdown/countdown.js", imported by "src/App.tsx".

我尝试将import语句改为* as countdown,但得到以下错误:

DEFAULTS" is not exported by "node_modules/.pnpm/countdown@2.6.0/node_modules/countdown/countdown.js", imported by "src/App.tsx".
Cannot call a namespace ("countdown").

这里是MRE
有谁知道是什么导致了这些错误,以及如何修复它们?我对React和Vite相当陌生,因此任何帮助都将不胜感激。
先谢谢你了!

cvxl0en2

cvxl0en21#

应该使用命名导入

import * as countdown from 'countdown';

如果仍然出现错误“cannot call a namespace”,您可以尝试访问countdown模块的函数,如

const remainingTime = countdown.default(new Date(2023, 4, 20));
wf82jlnq

wf82jlnq2#

虽然我不是特别喜欢这个解决方案,但它确实有效。本质上,我复制了库代码和类型声明(countdown.jscountdown.d.ts),将countdown.js转换为esm模块,并对countdown.d.ts进行了小编辑以导出模块。

let countdown: countdown.CountdownStatic;
export default countdown;

通过这些更改,一切都按预期运行和构建。

相关问题