在 Nextjs 上导入 html-to-draftjs
Import html-to-draftjs on Nextjs
我无法在我的 Nextjs 项目中导入 html-to-draftjs。如果我导入它:
import htmlToDraft from "html-to-draftjs"
结果将是:
我尝试使用动态导入:
const htmlToDraft = dynamic(
() => {
return import("html-to-draftjs");
},
{ ssr: false }
);
结果是:
有没有其他我可以尝试的导入方法?或者有没有我可以使用的替代 htmltodraft 模块?谢谢!
window
对象在服务器上不可用。所以错误发生在服务器上。如果你只想在浏览器上 运行 htmlToDraft
那么你应该在 componentDidMount
上 运行 它,因为我看到你正在使用 class 组件。
componentDidMount
生命周期方法只在 Next JS 的客户端执行。
render
方法将在服务器和客户端中执行。这就是你得到那个错误的原因。将其放入 componentDidMount
如果您使用功能组件,还有 2 种其他方法
1st Method:
将您的“html-to-draftjs”包降级到 1.4 版,这样您就可以直接导入它,而无需使用“dyanmic”导入方法。
2nd Method:
这样导入包:
let htmlToDraft = null;
if (typeof window === 'object') {
htmlToDraft = require('html-to-draftjs').default;
}
以前的解决方案之一的现代语法解决方案如下所示:
const htmlToDraft = typeof window === 'object' && require('html-to-draftjs').default;
我无法在我的 Nextjs 项目中导入 html-to-draftjs。如果我导入它:
import htmlToDraft from "html-to-draftjs"
结果将是:
我尝试使用动态导入:
const htmlToDraft = dynamic(
() => {
return import("html-to-draftjs");
},
{ ssr: false }
);
结果是:
有没有其他我可以尝试的导入方法?或者有没有我可以使用的替代 htmltodraft 模块?谢谢!
window
对象在服务器上不可用。所以错误发生在服务器上。如果你只想在浏览器上 运行 htmlToDraft
那么你应该在 componentDidMount
上 运行 它,因为我看到你正在使用 class 组件。
componentDidMount
生命周期方法只在 Next JS 的客户端执行。
render
方法将在服务器和客户端中执行。这就是你得到那个错误的原因。将其放入 componentDidMount
如果您使用功能组件,还有 2 种其他方法
1st Method:
将您的“html-to-draftjs”包降级到 1.4 版,这样您就可以直接导入它,而无需使用“dyanmic”导入方法。
2nd Method:
这样导入包:
let htmlToDraft = null;
if (typeof window === 'object') {
htmlToDraft = require('html-to-draftjs').default;
}
以前的解决方案之一的现代语法解决方案如下所示:
const htmlToDraft = typeof window === 'object' && require('html-to-draftjs').default;