2016-04-06 35 views
2

私は何が触れたのか分かりませんが、突然静的ファイルの提供を停止しました。 私は、次のアーキテクチャがあります。エラー:モジュール 'html'を見つけることができません。静的ファイルを提供できません。

  1. のApp

    • ルート
  2. 公共

  3. モデルを

    • ビュー
    • CSS
    • JS
  4. server.js

エラー:

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

私はのようなものを見てきました:

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

をしかし 希望を働いていない理由を私は本当に理解していませんあなたは私の人を助けることができます!

+1

は、それは 'res.render( 'インデックス')'ではないでしょう。静的なHTMLファイルまたは標準的なビューを提供しようとしていますか? (通常、ビューには動的コンテンツが含まれます)。 –

+0

また、 'express.static'は通常あなたのルートを使用する前に行わなければなりません。 –

+0

私はCRUDをやろうとしています。そして、私はオフィスのフロントエンドをします。だからそれはダイナミックになるだろう!あなたが正しい! @AshleyB – Despertaweb

答えて

3

express.jsミドルウェア宣言の順序は非常に重要です。あなたは、以前の経路のいずれかよりexpress.staticミドルウェアを定義する必要があります。

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

ビューエンジンは必須ですか?私はちょうど平らなHTML、翡翠、ないないejs他のもの@AlexanderマークとangularJSを使用しています – Despertaweb

+1

もちろん、いいえ、あなたのアプリでビューエンジンを使用しない場合は、この行を削除することができます: 'app.set( 'view 'jade'); 'インストールされている場合は' jade'パッケージをアンインストールします: 'npm un -S jade'。 – alexmac

+0

:appを削除した場合。set( 'ビューエンジン'、 'ejs'); エラー:モジュール 'html'を見つけることができません :( – Despertaweb

関連する問題