当前位置: 首页 > 面试题库 >

错误:ENOENT:Angular2和Express.js没有此类文件或目录

赏育
2023-03-14
问题内容

我正在对GitHub上的此示例Angular2应用进行较小的修改,以使其使用Express.js而不是KOA。但是目前,nodemon当我尝试在FireFox中加载应用程序时,控制台中会显示以下错误:

Error: ENOENT: no such file or directory

当http请求localhost : 8080触发*路由器处理程序并返回时index.html,Angular2应用程序开始加载,该处理程序返回,然后触发一系列嵌套依赖项的回调,其中一个引发错误并中途停止应用程序加载。

为了解决GitHub示例中的代码需要进行哪些具体更改Error: ENOENT: no such file or directory

背景和代码:

这是router.js使用Express.js而不是KOA 的新替代品:

'use strict';
let uuid = require('node-uuid');
var path = require('path');
let jwt = require('jsonwebtoken');
let config = require('./config');

// expose the routes to our app with module.exports
module.exports = function(app) {

    //all other methods omitted here for brevity

    app.get('*', function(req, res) {
        console.log('inside * route!');           
        if(req.url === '/'){
            res.sendFile(path.resolve('dist/client/index.html')); // load the single view file (angular will handle the front-end)
        } else {
            res.sendFile(path.resolve('./dist/client' + req.url));
        }
    });
};

nodemon请求的控制台输出localhost : 8080app.get('*'...)反复触发上述Express.js
方法,导致出现错误:

App listening on port 8080
inside * route!
GET / 304 54.261 ms - -
inside * route!
inside * route!
inside * route!
GET /boot.css 304 4.637 ms - -
GET /boot.js 304 4.447 ms - -
GET /vendor.js 304 3.742 ms - -
inside * route!
GET /vendor.js.map 200 3.180 ms - 3115631
inside * route!
GET /boot.js.map 200 2.366 ms - 61810
inside * route!
GET /bootstrap.css.map 404 2.515 ms - 169
Error: ENOENT: no such file or directory, stat '/home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/bootstrap.css.map'
    at Error (native)

新的server/index.js指定Express.js的是:

// set up ======================================================================
var express  = require('express');
var app      = express();                               // create our app w/ express
var port     = process.env.PORT || 8080;                // set the port
var morgan = require('morgan');             // log requests to the console (express4)
var bodyParser = require('body-parser');    // pull information from HTML POST (express4)
var methodOverride = require('method-override'); // simulate DELETE and PUT (express4)

app.use('/static', express.static(__dirname + '/dist/client'));
app.use(morgan('dev'));                                         // log every request to the console
app.use(bodyParser.urlencoded({'extended':'true'}));            // parse application/x-www-form-urlencoded
app.use(bodyParser.json());                                     // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
app.use(methodOverride());
app.use('/scripts', express.static(__dirname + '/node_modules/'));

// load the routes
require('./router')(app);

// listen (start app with node server.js) ======================================
app.listen(port);
console.log("App listening on port " + port);

GitHub样例应用程序中的所有其他内容与GitHub上的内容相同,
除了之外package.json,后者仅包含依赖项来支持router.jsindex.js中所示的更改。


问题答案:

bootstrap.css.map 表示您的浏览器正在尝试为Bootstrap CSS加载源映射(这是调试工具)。

仅当您打开浏览器的开发人员工具时才会发生这种情况,因此这绝对不是问题(除非您想实际调试Bootstrap的CSS)。除此之外,总是可以请求其他URL并产生相同的错误。

一种解决方案是在上添加一个显式错误处理程序sendFile,并假定发生错误时,这是​​因为文件不存在(因此应产生404响应):

res.sendFile(path.resolve('./dist/client' + req.url), (err) => {
  if (err) return res.sendStatus(404);
});


 类似资料:
  • 为了解决需要对GitHub示例中的代码进行哪些特定的更改? 对的请求的控制台输出将触发上面的express.js方法,反复导致错误: 新的指定express.js是: 除了之外,GitHub示例应用程序中的所有其他内容都与您在GitHub上看到的内容相同,它只包含支持和中更改的依赖项,如上图所示。

  • 第一个问题:我得到以下结果: 文件"D:\Anaconda\Lib\site-包\请求\api.py",第70行,在get返回请求('get', url, params=params,**kwargs) 文件"D:\Anaconda\Lib\site-包\请求\api.py",第56行,在请求返回session.request(method=method, url=url,**kwargs) 文件

  • 我试图熟悉kthread,并编写了一个非常简单的程序来用C语言测试它,指导如下:http://tuxthink.blogspot.com/2011/02/kernel-thread-creation-1.html.我在MacOSX上的威睿运行Ubuntu。 当我试图使用gcc (gcc test5.c -o test5.out)编译这个文件时,我得到“致命错误:linux/kthread.h:没有

  • 我正在尝试使用gcc执行tualth01.c,并且我将gcc和tudelaus01.c与libavcodec和libavformat及其相关文件放在同一文件夹中,它给了我这个错误 致命错误:libavcodec/avcodec. h没有终止此类文件或目录编译 当我通过Ubuntu12.04中的终端运行<code>gcc-o tutorial01 tutorial 01.c-lavformat-la

  • 如果使用此功能删除目录中的所有文件。 但是每当我这样做时,我都会收到这个错误消息: 警告:rmdir(directory/12)[function.rmdir]:delete_文件中没有这样的文件或目录。php “directory/12”是我要删除的目录的正确名称。我不明白为什么它说它不存在,因为它存在!奇怪的是,即使我收到了错误信息,目录还是被删除了。 所以我在for循环之前添加了一行代码,它

  • 问题内容: 我正在尝试将数据加载到我的MySQL数据库的表中,并得到此错误。 参考:此 路径是正确的百分率,我通过按shift键并单击“将路径复制为”将其复制并进行了多次检查。 因此,对此的任何提示将不胜感激 。 其次, 这里有没有办法使用某种相对路径(而不是绝对路径)? 问题答案: 我不知道您使用的是哪个版本的MySQL,但通过Google的快速搜索找到了您对这两个问题的可能答案。以下是《MyS