简体   繁体   English

ReferenceError:文档未定义(React SSR、Webpack)

[英]ReferenceError: document is not defined (React SSR, Webpack)

I'm trying to do server-side rendering my react app but it doesn't work.我正在尝试在服务器端渲染我的 React 应用程序,但它不起作用。 It shows document not define when trying to run.它在尝试运行时显示文档未定义。 This error only shows when I used CSS file in app.js file.此错误仅在我在 app.js 文件中使用CSS文件时显示。 Though client-side render working properly.虽然客户端渲染正常工作。

 //My App.js import React from 'react'; import { renderRoutes } from 'react-router-config'; import ErrorBoundary from './validation/ErrorBoundry'; import './assets/css/bootstrap.min.css'; import './assets/scss/main.css'; const App = ({ route }) => { return ( <div className="App"> <ErrorBoundary>{renderRoutes(route.routes)}</ErrorBoundary> </div> ); }; export default App; //webpack.base.js module.exports = { module: { rules: [ { test: /\\.(js|jsx)$/, exclude: /node_modules/, use: { loader: "babel-loader" } }, { test: /\\.css$/, use: [ 'style-loader', 'css-loader', ], } ] }, }

error screenshot错误截图

The document object is the root node of the HTML document.文档对象是 HTML 文档的根节点。 This object does not exist in node application.该对象在节点应用程序中不存在。 And the way to handle it in node application can be done by using jsdom .在节点应用程序中处理它的方法可以通过使用jsdom来完成。

jsdom is a pure-JavaScript implementation of many web standards, notably the WHATWG DOM and HTML Standards, for use with Node.js jsdom 是许多 Web 标准的纯 JavaScript 实现,特别是 WHATWG DOM 和 HTML 标准,用于 Node.js

That mistake happens because, Webpack transforms the CSS to the following code:发生该错误的原因是, Webpack将 CSS 转换为以下代码:

var css_main_css = document.createElement("style");
css_main_css.innerHTML = "*css*";
document.querySelector("head").appendChild(css_main_css);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM