【问题标题】:Webpack/Gulp/Express error: No such file or directoryWebpack/Gulp/Express 错误:没有这样的文件或目录
【发布时间】:2016-11-29 08:35:05
【问题描述】:

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

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

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 文件的方式,该文件被gulp 转换为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 函数需要我缺少的任何东西,或者这是否完全不可能。任何帮助都将不胜感激。

【问题讨论】:

    标签: node.js express gulp webpack pug


    【解决方案1】:

    我认为使用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'
            });
        });
    

    否则__dirnamebuild 之间可能缺少/

    【讨论】:

    • 刚试了一下,还是报错,告诉我不存在这样的文件
    • 错误是否与源代码行对应?你能在你的问题中提供完整的跟踪吗?指出代码,如果不是那个函数?
    • 这是完整的错误:{ [Error: ENOENT: no such file or directory, stat '/build/submissions/form.html'] errno: -2, code: 'ENOENT', syscall: 'stat', path: '/build/submissions/form.html', expose: false, statusCode: 404, status: 404, response: 'ENOENT: no such file or directory, stat \'/build/submissions/form.html\'' }
    • 路径以/build/...开头很奇怪。如果你检查__dirname 的值是正确的?
    • 是的,__dirname 的值是 /
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2019-07-25
    • 2021-10-31
    • 1970-01-01
    • 2019-08-29
    • 2016-09-01
    相关资源
    最近更新 更多