2015-04-29 15 views
14

我一直在學習如何使用MEAN堆棧來構建web應用程序,並且到目前爲止它已經非常有趣。我沒有使用yeoman生成器或npm應用程序爲我生成我的代碼,而是從頭開始構建我的整個應用程序。這樣我就知道每件作品如何連接以及我的應用程序正在發生什麼。我剛開始連我的應用程序的前端和後端,當我看着開發者控制檯,看到獲取錯誤意味着應用程序

GET http://blog.dev/bower_components/angular/angular.js 

不僅棱角分明,但所有其他資源我有(Modernizr的,角路線,mootools的,restangular等等......)。當您使用yeoman角形發生器時,您應該運行grunt serve命令啓動角側。因爲我從頭開始構建應用程序,並且使用npm作爲構建工具,所以我不知道如何構建前端服務器。所以,我只是用一個簡單的nginx虛擬主機指向我的index.html。這裏的配置:

server { 
     listen 80; 

     server_name blog.dev; 

     root /home/michael/Workspace/blog/app; 
     index index.html index.htm; 

     location/{ 
       try_files $uri $uri/ =404; 
     } 
} 

我不知道還有什麼其他變量可以影響的情況,所以如果我錯過了什麼,請告訴我,我會很樂意給你所需要的東西!

+0

檢查文件夾/文件的權限,可能是nginx用戶無法讀取它。 – vanadium23

+0

不能:/我在整個項目上嘗試了chmod -R 755,沒有任何改變。 – Michaelslec

+0

檢查路徑。 那裏的文件? – pykiss

回答

5

如果您使用平均堆棧,您應該能夠承載後端並直接爲節點提供前端服務。

我不確定你的項目結構,但這裏是我正在研究的結構。

/bin --contains a file called www.js (used to launch app) 
/data 
/models 
/node_modules 
/public -- contains my angular implementation 
/routes -- contains express routes 
/temp 
/upload 
/views 
app.js -- main configuration for express 
api.js -- my apis 
package.json 

在/bin/www.js文件中,您具有啓動節點服務器的代碼。

var app = require('../app'); 

app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { 
debug('Express server listening on port ' + server.address().port); 
});   

您還需要設置表達和你的路由這麼好看看路線第一 在路由目錄我有一個叫index.js

在此文件中的文件,我定義一個路由導致我的角度index.html頁面。

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

/* GET home page. */ 
router.get('/', function(req, res) { 
res.redirect('/pages/index.html'); 
}); 

module.exports = router; 

當然,您需要設置快遞。

process.env.TMPDIR = 'tmp'; // to avoid the EXDEV rename error, see   http://stackoverflow.com/q/21071303/76173 

var express = require('express'); 
var path = require('path'); 
var favicon = require('static-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var multer = require('multer'); 
var flow = require('./flow-node.js')('tmp'); 
var multipart = require('connect-multiparty'); 
var multipartMiddleware = multipart(); 
var uuid = require('uuid'); 
var mongoose = require('mongoose'); 
var session = require('express-session'); 

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

var app = express(); 

app.use(favicon()); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 
app.use(cookieParser()); 
app.use(session({genid: function(req) { return uuid.v4()}, secret: 'XXXXXXXXXXX', 
    saveUninitialized: true, 
    resave: true})); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

module.exports = app; 

現在假設你在'public'目錄中有你的Angular文件和javascript,你應該可以用下面的命令啓動Node。

node bin/www 

而你的瀏覽器在http://localhost:3000點,並在業務。

希望這有助於和快樂的學習。

相關問題