如何解决文件未被定义的错误

591 阅读1分钟

下面是如何解决你在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
}

而这将解决你的问题,因为你只在浏览器环境中运行条件里面的任何东西。