我有一个使用 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 的工作方式有什么不了解的地方吗?是什么赋予了?