下面是如何解决你在Node.js或使用Next.js等工具时可能出现的 "referenceerror: document is not defined "错误。
document 是一个由浏览器提供的对象,它在服务器端的JavaScript环境中是不可用的。
我在我的DOM文档对象模型指南中详细描述了document 对象。
特别是在Node.js中,没有办法解决这个问题--你必须找到使用document 的特定位置,并重新审视代码,找出你访问document 对象的原因。
你在后端环境中运行前端代码。
在Next.js中,你可以通过将你运行的代码包裹在一个条件中来解决这个问题。
这些代码可能在两种情况下运行--前端,当你使用链接导航到一个页面时,以及服务器端,如果你需要服务器端进入你的页面,例如运行getServerSideProps() 。
在这种情况下,你可以将对document 的引用限制为一个条件,检查window 对象是否可用,像这样。
if (typeof window !== 'undefined') {
//here `window` is available, so `window.document` (or simply `document`)
is available too
}
而这将解决你的问题,因为你只在浏览器环境中运行条件里面的任何东西。