Reactjs 无法在具有Next.js的模块外使用import语句
我需要导入npm包,但在使用“import”语句时失败 像这样Reactjs 无法在具有Next.js的模块外使用import语句,reactjs,package,next.js,Reactjs,Package,Next.js,我需要导入npm包,但在使用“import”语句时失败 像这样 从'lunacomponent'导入{cuteLuna}; 我得到一个错误:不能在模块外使用import语句 我将其更改为动态导入后,它就可以工作了 constcuteluna=dynamic(()=>import('lunacomponent')。然后((a)=>a.cuteLuna),{ssr:false}); 我的问题是,为什么我应该使用动态导入而不是通常的导入 谢谢 由于Next.js是一个运行在服务器和客户端上的框架,
从'lunacomponent'导入{cuteLuna};
我得到一个错误:不能在模块外使用import语句
我将其更改为动态导入后,它就可以工作了
constcuteluna=dynamic(()=>import('lunacomponent')。然后((a)=>a.cuteLuna),{ssr:false});
我的问题是,为什么我应该使用动态导入而不是通常的导入
谢谢 由于Next.js是一个运行在服务器和客户端上的框架,因此需要为每一方使用适当的模块样式 服务器端在节点上运行,因此您的lib必须公开 从您的错误中,我可以猜到您的
lunacomponent
lib没有导出cjs文件,因此它在服务器上失败,当您将dynamic
与ssr:false
一起使用时,您会告诉Next.js跳过服务器端运行,因此不会出现相同的错误
我在公共npm注册表中找不到这个
lunacomponent
lib,因此我无法检查我的假设。因为Next.js是一个运行在服务器和客户端上的框架,它需要为每个客户端使用适当的模块样式
服务器端在节点上运行,因此您的lib必须公开
从您的错误中,我可以猜到您的lunacomponent
lib没有导出cjs文件,因此它在服务器上失败,当您将dynamic
与ssr:false
一起使用时,您会告诉Next.js跳过服务器端运行,因此不会出现相同的错误
我无法在公共npm注册表中找到此lunacomponent
lib,因此无法检查我的假设