8

我有一个使用 Express 提供的 Webpack/React/Redux 项目,但我在理解它们如何组合在一起时遇到了一些麻烦。我的 Express 应用程序运行 Webpack 并提供我的根 index.html 文件,如下所示:

const app = express();
const server = require("http").createServer(app);

app.use(bodyParser.json());
app.use("/some/path", express.static(path.join(__dirname, "/public")));

// webpack middleware
const compiler = webpack(webpackConfig);

const webpackDevMid = require("webpack-dev-middleware");
const webpackHotMid = require("webpack-hot-middleware");

app.use(webpackDevMid(compiler, {
    noInfo: true,
    publicPath: webpackConfig.output.publicPath  // '/static/'
}));

app.use(webpackHotMid(compiler));

app.get("/", (req, res) => {
    if (!req.cookies.access_token) return res.redirect("/login");
    return res.sendFile(path.join(__dirname, "index.html"));
});

然后,我的根索引文件在正文中有“root”标签,在脚本标签中有 Webpack“/static/bundle.js”。根标记指向捆绑在 bundle.js 中的 index.js 文件,并且一切都正确呈现。这一切都很好。

我的问题是我试图将我的 favicon.ico 包含在我的根 index.html 中,它没有与 Webpack 捆绑在一起,所以我想将它作为 Express 的静态文件提供,我通常使用代码执行此操作:

app.use("/some/path", express.static(path.join(__dirname, "/public")));

不幸的是,这个文件夹没有被提供给客户端,我无法在 Webpack 包之外访问我的 favicon(我的 index.html 没有自由访问权限)。事实上,我试图以这种方式向客户展示的任何东西都不起作用。我对 webpack-dev-middleware 或 Express 服务器与 Webpack 的工作方式有什么不了解的地方吗?是什么赋予了?

4

2 回答 2

0

只需像这样设置静态文件夹

app.use(express.static(__dirname + '/path-to-static-folder'));
于 2019-03-26T19:45:28.113 回答
0

在你的 webpack 文件中确保你有:

target: 'node',
node: {
    __dirname: false,
},

看:

或者,使用path.join( '.' )

于 2017-06-23T20:49:33.257 回答