这又是我通过MEAN堆栈开发书获得的另一个错误。我们刚刚添加了一个新用户模块和一个用户服务,允许角度使用来自经过身份验证的用户的用户信息。我在终端中收到以下文件的500错误
'/用户/ users.client.module.js'
这是随附的相关服务文件。据我所知,这是一个Mongoose错误。为什么会出现这种情况?我还没有对用户进行身份验证,这发生在索引的页面加载上。
索引控制器
<!DOCTYPE html>
<html xmlns:ng="http://angularjs.org">
<head>
<title><%= title%></title>
</head>
<body>
<% if (user) { %>
<a href='/signout'>Sign Out</a>
<% } else { %>
<a href='/signup'>Sign-up</a>
<a href='/signin'>Sign-in</a>
<% } %>
<h1><%= title%></h1>
<section ng-view></section>
<script type="text/javascript">
window.user = <%- user || 'null' %>
</script>
<script type="text/javascript" src="/lib/angular/angular.js"></script>
<script type="text/javascript" src="/lib/angular-route/angular-route.js"></script>
<script type="text/javascript" src="/users/users.client.module.js"></script>
<script type="text/javascript" src="/users/services/authentication.client.service.js"></script>
<script type="text/javascript" src="/application.js"></script>
<script type="text/javascript" src="/example/example.client.module.js"></script>
<script type="text/javascript" src="/example/controllers/example.client.controller.js"></script>
<script type="text/javascript" src="/example/config/example.client.routes.js"></script>
</body>
Index.ejs
angular.module('users',[]);
用户模块
angular.module('users').factory('Authentication', [
function(){
this.user = window.user;
return {
user: this.user
};
}
]);
用户身份验证服务
<script type="text/javascript" src="/lib/angular/angular.js"></script>
<script type="text/javascript" src="/lib/angular-route/angular-route.js"></script>
<script type="text/javascript" src="/example/example.client.module.js"></script>
<script type="text/javascript" src="/example/controllers/example.client.controller.js"></script>
<script type="text/javascript" src="/example/config/example.client.routes.js"></script>
<script type="text/javascript" src="/users/users.client.module.js"></script>
<script type="text/javascript" src="/users/services/authentication.client.service.js"></script>
<script type="text/javascript" src="/application.js"></script>
编辑 - 2016年2月2日在此订单的视图中重新订购了脚本标记,但仍然没有。
{{1}}
答案 0 :(得分:4)
使用mode0
模块时,本书的源代码会导致错误。在我的分析中,index.ejs中加载的静态文件/users/users.client.module.js似乎被解释为服务器路由/ users /:userId,导致使用ID user.client.module搜索MongoDB中的用户。 JS。通过将users.client.module.js
语句放在express.js配置文件中的设置开头(例如语句app.use(express.static('./public')
之后)但在de require routes语句之前确定已解决该问题。
注意:作者在book's github repo中添加了这一行(在结束之前,&#34;返回应用&#34;):
答案 1 :(得分:1)
如果你对 users.server.routes.js 发表评论这个代码有同样的问题并解决了:
app.route('/users')
.post(users.create)
.get(users.list);
app.route('/users/:userId')
.get(users.read)
.put(users.update)
.delete(users.delete);
app.param('userId', users.userByID);
答案 2 :(得分:0)
重新定位
app.use(express.static('./public'));
对我不起作用。但只需重命名public/users
目录即可。
(thx Bsord @ disqus)
答案 3 :(得分:0)
我遇到了同样的问题,但我是从pm2
开始的。关闭pm2
并手动执行node server.js
后,它运行正常。我不知道为什么......