2016-04-06 20 views
2

Neye dokunduğumu bilmiyorum ama aniden statik dosyalarıma hizmet vermeyi durdurdu. Aşağıdaki mimarisini vardır:Hata: 'html' modülünü bulamıyor, Statik dosyaları sunamıyor

  1. App

    • Rotalar
  2. kamu

  3. Modelleri

    • görüntüleme
    • CSS
    • js
  4. server.js

hatası:

Error: Cannot find module 'html' 
    at Function.Module._resolveFilename (module.js:325:15) 
... 
at /Users/.../vintageAddiction/app/routes/indexRoutes.js:12:11 



indexRoutes.js:

var express = require('express'); 
var passport = require('passport'); 

var indexRouter = express.Router(); 
    indexRouter.route('/').get(function(req, res) { 
     res.render('index.html'); // load the index.ejs file 
    }); 


module.exports = indexRouter; 

SERVER.JS:

// server.js 

// set up ====================================================================== 
// get all the tools we need 
var express = require('express'); 
var app  = express(); 
var port  = process.env.PORT || 8080; 
var mongoose = require('mongoose'); 
var passport = require('passport'); 
var flash = require('connect-flash'); 

var morgan  = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var session  = require('express-session'); 

var configDB = require('./app/config/configDB.js'); 

// configuration =============================================================== 
mongoose.connect(configDB.url); // connect to our database 

require('./app/config/passport')(passport); // pass passport for configuration 

// routes ====================================================================== 
var routes  = require('./app/routes/indexRoutes.js'); // load our routes and pass in our app and fully configured passport 
var adminRoutes = require('./app/routes/adminRoutes.js'); 


// set up our express application 
app.use(morgan('dev')); // log every request to the console 
app.use(cookieParser()); // read cookies (needed for auth) 
app.use(bodyParser()); // get information from html forms 

// app.set('view engine', 'ejs'); // set up ejs for templating 

// required for passport 
app.use(session({ secret: 'vintageisthelaw' })); // session secret 
app.use(passport.initialize()); 
app.use(passport.session()); // persistent login sessions 
app.use(flash()); // use connect-flash for flash messages stored in session 

app.use('/', routes); 
app.use('/admin', adminRoutes); 

// set static files location 
// used for requests that our frontend will make 
app.use(express.static(__dirname + '/public/')); 
app.set('views', __dirname + '/public/views'); 
app.set('view engine', 'jade'); 
// launch ====================================================================== 
app.listen(port); 
console.log('The magic happens on :\n\n http://localhost:'+ port+'\n\n'); 

link to server.js

Ben benzer bir şey gördüm:

app.use(express.static(__dirname + '/public/views/')); 

Ama gerçekten anlamıyorum neden Umut çalışmıyor Bana yardım edebilirsin!

+1

o olmaz 'res.render ('indeks')'. Statik bir html dosyası veya sadece standart bir görünüm sunmaya çalışıyor musunuz? (görünümler normalde dinamik içerik içerir). –

+0

Ayrıca, 'express.static' normalde rotalarınızdan herhangi birini kullanmadan önce gitmelidir. –

+0

CRUD yapmaya çalışıyorum ve sonra ofisin ön ucunu yapacağım. Yani dinamik olacak! haklısın! @AshleyB – Despertaweb

cevap

3

Express.js sıralamasında middleware bildirimi çok önemlidir. Sen express.static katman önceki yolların hepsinden daha tanımlamak gerekir:

SERVER.JS:

.. require 

// logger must be defined first if you want log all the requests 
app.use(morgan('dev'));    
// after that you should define express.static middleware    
app.use(express.static(__dirname + '/public/')); 
app.set('views', __dirname + '/public/views'); 
app.set('view engine', 'jade'); 
// cookie and body parser must be defined before passport and session middleware 
app.use(cookieParser()); 
app.use(bodyParser()); 

app.use(session({ secret: 'vintageisthelaw' })); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 

// your routes must be defined in the end 
app.use('/', routes); 
app.use('/admin', adminRoutes); 

app.listen(port); 
console.log('The magic happens on :\n\n http://localhost:'+ port+'\n\n'); 
+0

görünüm motoru bir zorunluluktur? Sadece düz Html ile angularJS kullanıyorum, yeşim yok, başka hiçbir şey ejs yok @Alexander Marc – Despertaweb

+1

Tabii ki, uygulamanızda görünüm motorunu kullanmıyorsanız, bu satırı silebilirsiniz: 'app.set (' view motor ',' yeşim '); 've' jade' paketini yüklüyse,' npm un -S yeşim '. – alexmac

+0

: Uygulamayı kaldırırsam.set ('motoru görüntüle', 'ejs'); atıyor: Hata: 'html' modülü bulunamıyor ' :( – Despertaweb

İlgili konular