在 webpack (SSR) 捆绑的 express 中找不到静态文件夹
Can't find static folder in express bundled by webpack (SSR)
我打算进行服务器端呈现以与事件处理程序做出反应,但我遇到了让 index.js 文件在 localhost express 服务器中提供服务的问题。尝试在这里寻找其他几个答案,但我似乎无法解决这个问题。
这是代码。
import express from "express";
import React from "react";
import { renderToString } from "react-dom/server";
import App from "./app/home/app";
import path from "path";
import fs from "fs";
let server = port => {
const app = express();
app.use('/js', express.static(path.resolve('/static')));
console.log(path.resolve('/static'));
console.log(path.join(__dirname, '/static'));
console.log(fs.existsSync(path.resolve('/static')));
app.get("/", (req, res) => {
res.status(200).send(renderMarkup(renderToString(<App />)));
});
app.get("/ping", (req, res) => {
res.status(200).send("HELLO!");
});
app.listen(port, () => console.log("Server Ready!"));
}
let renderMarkup = html => {
return `
<!DOCTYPE html>
<html>
<head>
<title>Webpack SSR Demo</title>
<meta charset="utf-8" />
</head>
<body>
<div id="app">${html}</div>
<script src="/js/index.js"></script>
</body>
</html>
`;
}
server(process.env.PORT || 8080);
如果我的静态目录存在,我会尝试记录。尽管当我检查我的构建文件夹(webpack 包的输出目录。它确实存在)时,它 returns 是错误的。
我的构建文件夹目录描述如下(放心所有js包都构建成功):
build
|- static
|-- index.js
|- server.js
TLDR:视图已成功呈现。事件不工作,因为客户端 javascript 没有被加载。
在搜索了很多问题之后,github 问题并阅读了捆绑的 js。
这不是服务器代码的问题。
参见:https://github.com/webpack/webpack/issues/1599
我需要将此添加到我的 webpack.server.js:
node: {
__dirname: false,
},
我打算进行服务器端呈现以与事件处理程序做出反应,但我遇到了让 index.js 文件在 localhost express 服务器中提供服务的问题。尝试在这里寻找其他几个答案,但我似乎无法解决这个问题。
这是代码。
import express from "express";
import React from "react";
import { renderToString } from "react-dom/server";
import App from "./app/home/app";
import path from "path";
import fs from "fs";
let server = port => {
const app = express();
app.use('/js', express.static(path.resolve('/static')));
console.log(path.resolve('/static'));
console.log(path.join(__dirname, '/static'));
console.log(fs.existsSync(path.resolve('/static')));
app.get("/", (req, res) => {
res.status(200).send(renderMarkup(renderToString(<App />)));
});
app.get("/ping", (req, res) => {
res.status(200).send("HELLO!");
});
app.listen(port, () => console.log("Server Ready!"));
}
let renderMarkup = html => {
return `
<!DOCTYPE html>
<html>
<head>
<title>Webpack SSR Demo</title>
<meta charset="utf-8" />
</head>
<body>
<div id="app">${html}</div>
<script src="/js/index.js"></script>
</body>
</html>
`;
}
server(process.env.PORT || 8080);
如果我的静态目录存在,我会尝试记录。尽管当我检查我的构建文件夹(webpack 包的输出目录。它确实存在)时,它 returns 是错误的。
我的构建文件夹目录描述如下(放心所有js包都构建成功):
build
|- static
|-- index.js
|- server.js
TLDR:视图已成功呈现。事件不工作,因为客户端 javascript 没有被加载。
在搜索了很多问题之后,github 问题并阅读了捆绑的 js。
这不是服务器代码的问题。 参见:https://github.com/webpack/webpack/issues/1599
我需要将此添加到我的 webpack.server.js:
node: {
__dirname: false,
},