2017-03-26 56 views
0

示例:我們可以在nodejs中使用ui路由器與expressjs服務器端路由使用客戶端的angularjs路由。下面是示例

var bodyparser=require('body-parser'); 
var fs=require('fs'); 
var express=require("express"); 
var myApp = express(); 
var MongoClient=require('mongodb').MongoClient; 
var assert=require('assert'); 
var url = 'mongodb://localhost:27017/dbname'; 
var ObjectId=MongoClient.ObjectID; 
var http=require('http'); 

myApp.use(express.static(".")); 
myApp.use(bodyparser.json()); 
myApp.listen(5000); 

我使用服務器(Apache或節點)來加載從那裏正在使用UI路由器,使其這是工作良好文中的Apache運行SPA之後僅索引文件服務器,但是這是行不通的文節點上運行:

索引被正確加載,但以下網址: http://localhost:5000/Test/#/dashboard 拋出消息:「無法獲得/測試/」中的節點服務器,如何使路由工作正確in expressjs

$ urlRouterProvider.otherwise('/ login');

var DASHBOARD_ROOT = 'templates'; 

$ stateProvider.state( '索引',{ URL: '/登錄', templateUrl: '的login.html', 控制器: 'employeeInfoCtrl' });

$stateProvider.state('dashboard', { 
    abstract :true, 
    url: '/dashboard', 
    templateUrl: 'dashboard.html', 
    controller: 'employeeInfoCtrl' 
}); 

$stateProvider.state('dashboard.home',{ 
    url:'', 
    templateUrl: DASHBOARD_ROOT +'/Home.html' 
}); 
$stateProvider.state('dashboard.about',{ 
    url:'/about', 
    templateUrl: DASHBOARD_ROOT +'/about.html' 
}); 
$stateProvider.state('dashboard.employeeinfo',{ 
    url:'/employeeinfo', 
    templateUrl:DASHBOARD_ROOT+'/employeeinfo.html' 
}); 

回答

1

在節點:你必須針對你的客戶構建目錄添加路徑GET#test

myApp.get('/test',function(req,resp){ 

    resp.render('index.html'); 
}) 
+0

嗨裏奇,它不工作,投擲:錯誤:無法找到模塊'html' 在Function.Module._resolveFilename(module.js:339:15) 在Function.Module._load(module.js:290:25 ) at Module.require(module.js:367:17) at require(internal/module.js:16:19).... –

+0

索引文件正在正確加載,但在登錄時將替換視圖,只使用uirouter哪些不會發生 –

+0

@BhimashankarMantur同樣的方式你必須編寫登錄路徑登錄。 –

0

可以實現與

app.use(express.static('dist')) //dist is where your js is bundled 

然後重定向使用通配符的所有請求(* )到您的index.html文件

app.get('*', (req, res) => res.sendFile('index.html'))); 
+0

不工作我只想使用uirouter進行客戶端路由,但expressjs進入中間,似乎很難設置viewEngine。 –

+0

@BhimashankarMantur您的客戶端路由器和您的意見表達「inbetween」是什麼意思? 如果您不用快速渲染視圖,則不需要設置視圖引擎。 –

+0

上午使用angulars uirouter配置路由,但express不允許tat配置工作,我只想使用express來獲取和發佈數據 –

相關問題