我试图重构MEAN堆栈应用程序中的一些视图逻辑,并运行到UI路由器的一些问题。对Angular来说,我还是一个新手,所以我认为我的问题可能非常简单,我错过了。角度UI路由器投掷500错误
我想通过一些我在堆栈溢出这里找到的东西,但由于某种原因,我不断收到内部服务器错误(500)。任何人都可以看看?
我在下面的代码试图模仿this。在我的index.js
指数路线:
router.get('/', function (req, res, next) res.render('index.html'); });
查看发动机设置在app.js:在我的角度应用js脚本
app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.engine('html', require('ejs').renderFile);
的app.config方法:
app.config ([
'$stateProvider',
'$urlRouterProvider',
'$locationProvider',
function($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('common', {
templateUrl: 'common.html', // exists in views folder
abstract: true
})
.state('hi', {
url:'/',
templateUrl:'/hi.html' // also in views folder
});
$locationProvider.html5Mode(true);
}]);
我的index.html:
<!DOCTYPE html>
<html data-ng-app="djq">
<head>
<title>Index</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.10/angular-ui-router.js"></script>
<script src="/javascripts/youtube.js"></script>
<base href="/">
</head>
<body>
<div data-ui-view="">
</div>
</body>
</html>
我common.html
<section class="content-wrapper">
<div class="main-content" data-ui-view></div>
</section>
我hi.html
<div>Hi there!</div>
当我开始我的应用程序,并导航到本地主机:5000 /,我收到以下错误:
GET http://localhost:5000/hi.html 500 (Internal Server Error)
让我知道如果我应该p提供更多信息。
更新(已解决):所以我终于在Edward答案的下面得到了这一切,但这并不是完全正确的解决方案,因为我的文件位于不同的位置。
他提到使用“partials”文件夹。我已经有一个“views”文件夹,它的行为相同。在我的节点app.js我:
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
/* ... */
app.use(express.static(path.join(__dirname, 'public')));
app.use('/bower_components', express.static(__dirname + '/bower_components'));
所以,我有两个视图/和bower_components /有静态目录。 views /是我所有的html文件所在的地方。
“angularApp.js”是我在客户端使用的角度文件。我编辑它有以下几点:
app.config ([
'$stateProvider',
'$urlRouterProvider',
'$locationProvider',
function($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('common', {
templateUrl: 'views/common.html',
abstract: true
})
.state('hi', {
url: '/',
parent: 'common',
templateUrl: 'views/hi.html'
});
/* ... */
$locationProvider.html5Mode(true);
}]);
所以,如果我们导航到'/',角将向节点发出请求,以获取文件在views/hi.html。我的问题是我没有处理这个请求。
在我的索引中。JS,这是我对这些类型的请求路由器,我说:
router.get('/views/:name', function(req, res) {
var name = req.params.name;
res.render(name);
});
而现在一切都按预期工作:)
看看你的服务器日志?听起来像服务器端的错误,因为Angular是客户端库 –
我的服务器日志中出现的所有内容是: 04:06:58 web.1 | GET /hi.html 500 18.697 ms - 1421 – FateNuller
@FateNuller我的答案到底对你有帮助吗? –