Webpack,开发中间件和静态文件

我有一个Web服务/ React / Redux项目与快递服务,我有一些麻烦理解他们如何融合在一起。 我的快车应用程序运行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")); }); 

然后,我的根索引文件在主体中具有“根”标记,在脚本标记中具有Webpack“/static/bundle.js”。 根标签指向捆绑在bundle.js中的我的index.js文件,一切都正确呈现。 这一切工作正常。

我的问题是,我试图将我的favicon.ico包含在我的根目录index.html中,而不是与Webpack捆绑在一起,所以我希望将它作为一个静态文件提供给Express,我通常使用这个代码:

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

不幸的是,这个文件夹没有得到服务的客户端,我不能访问我的favicon的Webpack包(我的index.html没有任意的访问)的外部。 事实上,我没有试图以这种方式向客户展示正在工作。 有没有我不了解webpack-dev-middleware,或者Express服务器与Webpack的工作方式? 是什么赋予了?

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

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

看到:

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