与节点反应SSR-ReferenceError:未定义文档

时间:2020-08-10 05:05:43

标签: node.js reactjs express babeljs server-side-rendering

我正在用我的React + Node应用程序针对SEO尝试SSR,但收到此错误。我猜它正在寻找Node中不存在的document关键字,这就是为什么会出现此错误的原因。我查了一下Google,但找不到任何解决方案。

var elem = document.createElement('div');
       ^

ReferenceError: document is not defined
at Object.<anonymous> (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:7661:12)
at __webpack_require__ (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:36:30)
at Object.<anonymous> (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:1030:1)
at __webpack_require__ (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:36:30)
at Object.<anonymous> (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:5655:14)
at __webpack_require__ (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:36:30)
at Object.<anonymous> (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:10045:13)
at __webpack_require__ (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:36:30)
at Object.<anonymous> (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:11557:18)
at __webpack_require__ (E:\IRS-Ecommerce\Ecommerce\IRS-Ecommerce\IRS-Ecommerce\node_modules\quill\dist\quill.js:36:30)

Babel文件:

require("ignore-styles");

require("@babel/register")({
  ignore: [/(node_module)/],
  presets: ["@babel/preset-env", "@babel/preset-react"],
  plugins: ["@babel/plugin-proposal-class-properties"],
});

require("./server");

Server.js

const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const path = require("path");
const busboy = require("connect-busboy");
const busboyBodyParser = require("busboy-body-parser");
const fs = require("fs");
const React = require("react");
const ReactDOMServer = require("react-dom/server");

const App = require("./IRS-Ecommerce/src/App");
const html = ReactDOMServer.renderToString(<App />);
const app = express();

app.use("^/$", (req, res, next) => {
fs.readFile(
path.resolve("./IRS-Ecommerce/build/index.html"),
"utf-8",
(err, data) => {
  if (err) {
    console.log(err);
    return res.status(404).send("Internal Server Error");
  } else {
    return res.send(
      data.replace(`<div id="root"></div>`, `<div id="root">${html}</div>`)
    );
  }
}
);
});

 app.use(express.static(path.resolve(__dirname, "IRS-Ecommerce", "build")));

这是我第一次尝试SSR。有人可以帮我吗?

EDIT:我想它正在忽略服务器端节点模块,而不是React节点模块。我不确定,但也许就是这个问题。如果是,该如何解决?

0 个答案:

没有答案