当前位置: 首页 > 知识库问答 >
问题:

在Node/express中路由

蔡宏大
2023-03-14

app.js:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var newproject = require('./routes/newProject');

var app = express();



// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/newproject', newproject);



// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

index.js

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
    res.render('index');
});

module.exports = router;

新项目。js

var express = require('express');
var router = express.Router();
var sql = require ('mssql');

router.get('/newproject', function(req, res) {
    res.render('newProject');
});


module.exports = router;

NewProject.ejs

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
hello
</body>
</html>

和类似的index.ejs。

我的主目录正常工作,即localhost:3000/正常工作,但当我键入localhost:3000/newproject时,会出现以下错误:

错误:无法在EventEmitter上的视图目录“F:\project\pcgWebApp\views”中查找视图“Error”。在ServerResponse上呈现(F:\project\pcgWebApp\node\u modules\express\lib\application.js:580:17)。在F:\project\pcgWebApp\node\u modules\express\lib\response.js:971:7处进行渲染(F:\project\pcgWebApp\node\u modules\express\lib\response.js:971:7)。第二层的js:47:7。处理F:\project\pcgWebApp\node\U modules\express\lib\router\layer.js:71:5处的修剪前缀(F:\project\pcgWebApp\node\U modules\express\lib\router\index.js:315:13)处的错误(F:\project\pcgWebApp\node\U modules\express\lib\router\index)。js:284:7 at函数。在F:\project\pcgWebApp\app的下一个(F:\project\pcgWebApp\node\index.js:335:12)处理参数(F:\project\pcgWebApp\node\modules\express\lib\router\index.js:275:10)。第三层的js:36:3。handle[作为handle\u请求](F:\project\pcgWebApp\node\u modules\express\lib\router\layer.js:95:5)

有人知道发生了什么吗-?请帮助-已经尝试做npm安装。

如果我把它放在

router.get('/newproject', function(req, res) {
    res.render('newProject');
});

应用程序内。js并将路由器更改为应用程序。收到

共有2个答案

冀嘉木
2023-03-14

我相信您的第一个错误是源于这段代码:

app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

更具体地说,是试图呈现错误视图的部分。我会确保您有错误。ejs视图文件夹中的文件/视图。

我还将更改新项目中的/newproject根目录。js文件,因为根来自文件名。

万修然
2023-03-14

新建项目中。js更改此选项:

//...
router.get('/newproject', function(req, res) {
    res.render('newProject');
});

为此:

//...
router.get('/', function(req, res) {
    res.render('newProject');
});

从新项目开始。js似乎被用作外部路由器,在您编写代码时,您的最终endpoint将是:

本地主机:3000/newproject/newproject

相反,你希望它是:

localhost:3000/newproject/

这就是为什么应该将“/”指定为管线内部的endpoint:因为Express中的管线路径是关联的

 类似资料:
  • 问题内容: 我正在尝试使用express来解析查询字符串,以防设置某些参数并在实际路由发生之前执行一些代码。用例是获取某个可以设置的值,而与所使用的链接无关。我使用express’功能使用next()将内容传递给下一个可能的规则。 到目前为止,我尝试过-在所有app.get / post-rule-block的最顶部: 并且: 应触发的示例: 不幸的是,我的解决方案都没有真正起作用,所有发生的事情

  • Node.jsを使ってアプリケーションを構築しよう 目次 アプリケーションの構造を理解しよう Node.jsについて知ろう Node.jsを使ってみよう Node.jsとExpressの基本 MySQLを使ってデータベースを構築しよう Node.jsとデータベースを接続しよう Node.jsでデータベースからデータを取得して表示させてみよう Node.jsで詳細ページを作ってみよう Node.js

  • Node.js Express & MongoDB: CRUD Rest APIs For more detail, please visit: Node.js, Express & MongoDb: Build a CRUD Rest Api example Server side Pagination in Node.js with MongoDB and Mongoose Security:

  • Node Express Mongoose A boilerplate application for building web apps using express, mongoose and passport. Read the wiki to understand how the application is structured. Usage git clone https://githu

  • RESTful API Node Server Boilerplate A boilerplate/starter project for quickly building RESTful APIs using Node.js, Express, and Mongoose. By running a single command, you will get a production-ready N

  • node-weixin-express是一个基于nodejs为基础,以expressjs作为首选http服务器框架的微信公共账号服务器。 他旨在降低开发微信公共账号时的门槛,节约开发时间。 几个主要目标: 可以直接通过一个命令运行微信公共账号服务(已经完成) 实现基本的微信功能: 验证服务器(已经完成) OAuth 验证API(已经完成) 微信支付API(已经完成) 消息接口API(等待完成) 可