2017-04-10 79 views
0

我的應用程序使用node.js作爲後端,Express作爲框架。我使用Netbeans作爲IDE,並獲得以下輸出。node.js express應用程序找不到jade視圖,404消息響應

Not Found 
404 

Error: Not Found 
at /home/ingeborg/netbeans/GML/app.js:33:13 
at Layer.handle [as handle_request] (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/layer.js:95:5) 
at trim_prefix (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:317:13) 
at /home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:284:7 
at Function.process_params (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:335:12) 
at next (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:275:10) 
at /home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:635:15 
at next (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:260:14) 
at Function.handle (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:174:3) 
at router (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:47:12) 

我有以下數據設置:

- node-modules 
- public 
    - fonts 
    - images 
    - javascripts 
    - stylesheets 
     stylesheets.less 
     stylesheet.css 
    - routes 
     index.js 
     news.js 
     users.js 
    - views 
     index.jade 
     error.jade 
     news.jade 
     layout.jade 
    Gruntfile.js 
    app.js 
    gulpfile.js 
    package.json 

的app.js看起來像這樣

var news = require('./routes/news'); 
var index = require('./routes/index'); 
var users = require('./routes/users'); 
var app = express(); 
// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
... 
app.use('/', index); 
app.use('/index', index); 
app.use('/news', news); 
app.use('/users', users); 

,這是我index.jade

h3 
    a(href="news") link 

和這是我的news.jade

h3 test 

路由通過路由文件實現。 index.js

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

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

router.get('/index', function(req, res, next) { 
    res.render('index'); 
}); 
module.exports = router; 

的news.js路由器文件

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

/* GET home page. */ 
router.get('news', function(req, res, next) { 
    res.render('news'); 
}); 
module.exports = router;   

以下情節

  • 路由上的鏈接 「/」 和 「指標」 的作品被通緝。
  • 「/ news」或「news」(在rounting,app.js和view文件中測試過)沒有路由。我不知道爲什麼路由不起作用。我希望我沒有忘記某事。

THX, 英格

回答

0

新聞航線文件丟失。你必須渲染你的玉器。

var news = require('./routes/news'); 
+0

?這是第一行還是它屬於另一個地方? – Ingeborg

+0

您在app.js上指定爲所有/新聞路徑使用文件/routes/news.js,但在數據設置列表中,路由文件夾中缺少news.js文件。 – proton2b

+1

我剛剛看到的第二件事是,您在app.use('/ news',news)app.js中一次路由兩次到/ news/news。並且第二次遍歷news.js文件router.get('news',function(req,res,next)..你可以嘗試訪問http:// localhost:3000/news/news或更改路由器。 get('news'... to router.get('/'... in your news.js. – proton2b

1

您的代碼適用於我。

/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 news = require('./routes/news'); 
var users = require('./routes/users'); 

var app = express(); 

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

// 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('/users', users); 
app.use('/news', news); 

// 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; 

/routes/news.js

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

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('news'); 
}); 
module.exports = router; 
在app.js
+0

哪個IDE使用? – Ingeborg

+0

我使用Sublime Text。上面的例子是由express cli generator'express --view = jade myapp' https://expressjs.com/en/starter/generator.html – proton2b

+0

創建的。在刪除「/ news」到「/」之後,「/」在玉文件中錯過了。 Thx很多你的幫助! – Ingeborg

相關問題