【问题标题】:express - Angular2 Error: ENOENT: no such file or directory upon refreshexpress - Angular2错误:ENOENT:刷新时没有这样的文件或目录
【发布时间】:2016-09-01 21:25:15
【问题描述】:

我有一个公用文件夹,我在其中放置了一个 angular2 应用程序。现在我正在尝试使用始终返回 index.html 的包罗万象的路由设置快速服务器。明确一点 - 根据this question,我需要将所有路线映射到 index.html。

如果我访问基础服务器 URL (localhost:10001),一切都会按预期工作。但是当我转到一条路线(比如说 localhost:10001/landing)并刷新页面时,我收到以下错误:

错误:ENOENT:没有这样的文件或目录,stat '/Users/shooshte/express-test/index.html' 在错误(本机)

这是我的服务器配置:

var express = require('express');
var static = require('serve-static');
var server = express();

// middleware
server.use(express.static(__dirname + '/public'));

// routes
server.use('*', function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

var port = 10001;
server.listen(port, function() {
  console.log('server listening on port ' + port);
});

我做错了什么?

【问题讨论】:

    标签: javascript express


    【解决方案1】:

    您在index.html 的路径中缺少public 目录:

     res.sendFile(__dirname + '/public/index.html');
    

    【讨论】:

    • 认为这已经由 express.static 部分处理。谢谢
    • @MihaŠušteršič express.static() 只会处理可以找到匹配文件的请求。在您的情况下,对于/landing,它将尝试找到一个名为public/landing/index.html 的文件,该文件不存在(我假设)。如果找不到文件,它会将请求委托给下一个处理程序,即server.use('*', ...)
    • 我有一个相关的问题。你愿意发表评论吗?这是链接:stackoverflow.com/questions/38625483/…
    【解决方案2】:

    我认为您的 index.html 在公共文件夹或根文件夹 /Users/shooshte/express-test/ 中都没有

    这是您收到此错误的唯一版本

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 2017-10-07
      • 2020-06-03
      • 1970-01-01
      • 2019-03-09
      • 2017-12-28
      • 2022-01-16
      相关资源
      最近更新 更多