Webpack / Gulp / Express错误:没有这样的文件或目录

时间:2016-07-25 20:55:13

标签: node.js express gulp webpack pug

我有一个项目,其中包含一个文件上传表单,它使用快速路由器和jade / pug模板渲染2个不同的视图。

我正在尝试使用webpack将我的所有javascript文件编译成一个(backend.js),然后将该backend.js文件以及3个.pug文件编译到另一个目录中。 / p>

webpack编译项目中包含的js文件后,将它们放在build / backend.js中: project-after-webpack

最后,gulp获取backend.js文件以及位于项目中另一个文件夹中的pug模板,并将它们放在此结构中,将backend.js编译为main.js,并且将我的所有pug文件转换为HTML文件: project-after-gulp

项目的其余部分位于根目录中。

其中一个javascript文件负责在某些http请求中呈现视图。这是我遇到麻烦的地方。没有gulp和webpack,我可以使用res.render()渲染.pug视图没有问题。但是,当我使用gulp和webpack时,我收到“没有这样的文件或目录”错误。这就是我尝试渲染form.pug文件的方式,该文件已变为form.html

router.get('/', function list (req, res, next) { //res.render('submissions/form.pug' res.sendFile(path.join(__dirname+'build/submissions/form.html'), { submission: {}, action: 'Add' }); });

控制台正在告诉我ENOENT: no such file or directory, stat '/form.html',即使你可以看到那里有一个文件。

我不确定我的路径是否不正确,如果使用.sendFile功能需要我缺少的任何内容,或者这是不可能的。任何帮助都不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为使用path.join()see the docs here)的目的是构建一个与所有操作系统兼容的路径字符串。

它将所有路径片段作为参数,如下所示:

    router.get('/', function list (req, res, next) {
        //res.render('submissions/form.pug'
        res.sendFile(path.join(__dirname, 'build', 'submissions', 'form.html'), {
            submission: {},
            action: 'Add'
        });
    });

/__dirname之间可能缺少build