正在尝试Next.js,但我正在为以下内容而苦苦挣扎。我只是尝试安装react-hook-mousetrap
,并像往常一样导入它:
import useMousetrap from "react-hook-mousetrap";
这会给我带来以下错误:
SyntaxError: Cannot use import statement outside a module
1 > module.exports = require("react-hook-mousetrap");
我不确定这是什么意思?然后我想这可能是Nextjs的SSR的问题,因为我的库启用了热键,并将使用一些浏览器API。如果你已经知道我在错误的轨道上,你现在可以停止阅读了。
然而,我接下来做的是,我尝试了动态导入:
1.下一步动态导入/动态导入
我遇到的第一件事是next/dynamic
,但这似乎只适用于JSX/Reaction组件(如果我错了,请纠正我)。在这里,我将导入并使用Reaction挂钩。
2.等待动态导入(...).默认
所以我试了试dynamically importing it as a module,但我不确定具体怎么做。
我需要在我的组件的顶层使用我的钩子,无法使该组件异步,现在不知道该怎么办?
const MyComponent = () => {
// (1) TRIED THIS:
const useMousetrap = await import("react-hook-mousetrap").default;
//can't use the hook here since my Component is not async; Can't make the Component async, since this breaks stuff
// (2) TRIED THIS:
(async () => {
const useMousetrap = (await import("react-hook-mousetrap")).default;
// in this async function i can't use the hook, because it needs to be called at the top level.
})()
//....
}
如有任何建议,我们将不胜感激!
2条答案
按热度按时间yrefmtwq1#
出现错误的原因是
react-hook-mousetrap
作为ESM库导出。您可以让Next.js在您的next.config.js
中使用next-transpile-modules
来转换它。brccelvz2#
我不知道我的答案是否真实,但我今天面对的是这个问题,以及我做了什么:
希望这能有所帮助!)
screen from next.js app