我正在用我的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节点模块。我不确定,但也许就是这个问题。如果是,该如何解决?