CastError: Cast to ObjectId failed for value "users.client.module.js" at path "_id"
CastError: Cast to ObjectId failed for value "users.client.module.js" at path "_id"
这又是我在阅读 MEAN 堆栈开发书籍时遇到的另一个错误。我们刚刚添加了一个新的用户模块和一个用户服务,以允许 angular 使用来自经过身份验证的用户的用户信息。我在终端中收到以下文件的 500 错误
'/users/users.client.module.js'
这是与之相关的服务文件。据我所知,这是一个 Mongoose 错误。为什么会弹出这个?我什至还没有对用户进行身份验证,这发生在索引的页面加载时。
索引控制器
exports.render = function(req,res) {
res.render('index', {
title: 'Hello World',
user: JSON.stringify(req.user)
});
};
Index.ejs
<!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>
用户模块
angular.module('users',[]);
用户身份验证服务
angular.module('users').factory('Authentication', [
function(){
this.user = window.user;
return {
user: this.user
};
}
]);
编辑 - 2016 年 2 月 2 日将视图中的脚本标签重新排序到此顺序,但仍然不行。
<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>
如果您评论 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);
本书的源代码在使用users.client.module.js
模块时导致错误。在我的分析中,在 index.ejs 中加载的静态文件 /users/users.client.module.js 似乎被解释为服务器路由 /users/:userId 导致在 MongoDB 中搜索用户ID 用户.client.module.js.通过在 express.js 配置文件中将 app.use(express.static('./public')
语句放在设置的开头(例如在语句 var app = express();
之后)解决了这个问题,但肯定在 de require routes 语句之前。
注意:作者在 book's github repo 中添加了这一行(就在结束之前,"return app"):
重新定位
app.use(express.static('./public'));
对我不起作用。但只需重命名 public/users
目录即可。
(感谢 Bsord@disqus)
我遇到了同样的问题,但我是来自 pm2
的 运行。在关闭 pm2
并手动执行 node server.js
后,它工作正常。不知道为什么...
这又是我在阅读 MEAN 堆栈开发书籍时遇到的另一个错误。我们刚刚添加了一个新的用户模块和一个用户服务,以允许 angular 使用来自经过身份验证的用户的用户信息。我在终端中收到以下文件的 500 错误
'/users/users.client.module.js'
这是与之相关的服务文件。据我所知,这是一个 Mongoose 错误。为什么会弹出这个?我什至还没有对用户进行身份验证,这发生在索引的页面加载时。
索引控制器
exports.render = function(req,res) {
res.render('index', {
title: 'Hello World',
user: JSON.stringify(req.user)
});
};
Index.ejs
<!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>
用户模块
angular.module('users',[]);
用户身份验证服务
angular.module('users').factory('Authentication', [
function(){
this.user = window.user;
return {
user: this.user
};
}
]);
编辑 - 2016 年 2 月 2 日将视图中的脚本标签重新排序到此顺序,但仍然不行。
<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>
如果您评论 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);
本书的源代码在使用users.client.module.js
模块时导致错误。在我的分析中,在 index.ejs 中加载的静态文件 /users/users.client.module.js 似乎被解释为服务器路由 /users/:userId 导致在 MongoDB 中搜索用户ID 用户.client.module.js.通过在 express.js 配置文件中将 app.use(express.static('./public')
语句放在设置的开头(例如在语句 var app = express();
之后)解决了这个问题,但肯定在 de require routes 语句之前。
注意:作者在 book's github repo 中添加了这一行(就在结束之前,"return app"):
重新定位
app.use(express.static('./public'));
对我不起作用。但只需重命名 public/users
目录即可。
(感谢 Bsord@disqus)
我遇到了同样的问题,但我是来自 pm2
的 运行。在关闭 pm2
并手动执行 node server.js
后,它工作正常。不知道为什么...