在 webpack (SSR) 捆绑的 express 中找不到静态文件夹

Fra*_*con 2 javascript node.js express server-side-rendering

我打算进行服务器端渲染以与事件处理程序做出反应,但我遇到了在 localhost express 服务器中获取 index.js 文件的问题。试图在这里寻找其他几个答案,但我似乎无法解决这个问题。

这是代码。

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);
Run Code Online (Sandbox Code Playgroud)

如果我的静态目录存在,我尝试记录。尽管当我检查我的构建文件夹(webpack 包的输出目录。它确实存在)时,它返回一个 false。

我的构建文件夹目录如下(请放心所有js包都构建成功):

build
|- static
|-- index.js
|- server.js
Run Code Online (Sandbox Code Playgroud)

TLDR:视图已成功呈现。事件不起作用,因为没有加载客户端 javascript。

Fra*_*con 5

在搜索了很多问题之后,github问题并阅读了捆绑的js。

这不是服务器代码的问题。参见:https : //github.com/webpack/webpack/issues/1599

我需要将它添加到我的 webpack.server.js 中:

node: {
  __dirname: false,
},
Run Code Online (Sandbox Code Playgroud)