如何在Webpacked后使Express.js服务?

时间:2016-09-02 22:46:27

标签: javascript node.js express webpack

我试图让一个系统在一起运行我的Node服务器(在这种情况下是Express),与我的客户端脚本一样 - 使用webpack。

Express服务器非常基本。我导入一些node_modules和一些本地相关文件。 Webpack似乎没有解析所有内容,导入相关文件,只需要()“node_modules”(感谢外部)。

但是,当我在webpacking之后运行服务器(使用node server.js)时,尝试访问我的index.html时会出错。

Error: ENOENT: no such file or directory, stat '/public/index.html'
    at Error (native)

服务器报告它正在侦听3000,但每次尝试访问都会记录此错误并将其显示在浏览器中。我发送了一个包含以下内容的预制HTML文件:

res.sendFile(path.resolve(__dirname, 'public', 'index.html'));

我搜索并发现使用babel-cli的人仅仅使用Babel(和预设)就可以在指定的Node代码上运行它,但是我无法解析任何模块路径。

有没有其他人成功地编译过Node服务器应用程序并让它真正服务?我应该使用不同的功能来服务我的客户端吗?我应该以不同的方式而不是Webpack来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我遇到了与webpacked Express相同的问题并修复了它: response.sendFile(path.resolve('./public/index.html'), err => err && next(err));

在我的例子中,server.js和server.bundle.js文件位于我项目的根文件夹中。

如果您的情况有所不同,可以尝试:

response.sendFile(path.resolve('./public/index.html'), { root: __dirname }, err => err && next(err));