我有一个项目,其中包含一个文件上传表单,它使用快速路由器和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
功能需要我缺少的任何内容,或者这是不可能的。任何帮助都不胜感激。
答案 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
?