WebPack,Dev-Middleware和静态文件



我有一个webpack/react/redux项目,我很难理解它们如何结合在一起。我的Express App运行WebPack并为我的root 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和webpack"/static/bundle.js"。root标签指向我的index.js文件捆绑在bundle.js中,所有内容都正确呈现。这一切都很好。

我的问题是,我正在尝试将我的favicon.ico包括在我的root index.html中,而不是与webpack捆绑在一起,所以我想将其用作带有express的静态文件,我通常会用它来代码:

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

不幸的是,此文件夹没有将其提供给客户端,我无法在WebPack捆绑包外访问我的favicon(我的index.html无权访问它(。实际上,我没有尝试以这种方式暴露于客户。我是否对WebPack-Dev-Middleware或Express Server与WebPack的方式不了解?什么给?

在您的WebPack文件中确保您有:

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

请参阅:

  • https://github.com/webpack/webpack/issues/1599
  • https://github.com/webpack/docs/wiki/configuration#node

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

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

app.use(express.static(__dirname + '/path-to-static-folder'));

相关内容

  • 没有找到相关文章

最新更新