这是关于发布angularjs以表达4.0 的问题
我上了一门关于复数形式的课程。我从课程老师的github获得了源代码(https://github.com/joeeames/multivision-demo)。您可以在此处找到代码行:https://github.com/joeeames/multivision-demo/blob/master/public/app/account/mvAuth.js
authenticateUser: function(username, password) {
var dfd = $q.defer();
$http.post('/login', {username:username, password:password}).then(function(response) {
if(response.data.success) {
var user = new mvUser();
angular.extend(user, response.data.user);
mvIdentity.currentUser = user;
dfd.resolve(true);
} else {
dfd.resolve(false);
}
});
return dfd.promise;
},
现在,如果你按原样安装node/bower项目,你就可以正常工作了(在package.json中,你可以看到"express":"~3.4.4")。如果你将其更新到express 4.0,并提供express 4.0的要求,如分离体解析器、cookie解析器等。它将出现问题:如果你试图登录,上面的行将生成错误(从Angularjs到Passport.authenticate()的400个错误请求)。升级到express 4.0后,我的护照LocalStrategy将永远不会被调用。不幸的是,我没有足够的知识来使用wireshark或其他工具在发布之间检查http的细节,希望能找到它。有人能给我一个想法吗?升级到express 4.0后,如何让它工作?
单靠这一点无济于事。您需要为主体解析器指定Content-Type
:
app.use(bodyParser.json({ type: 'application/*+json' }))
并确保客户端正在使用Content-Type
,在您的情况下这是可以的。
我知道这是一个老问题,但我想我会发布一个回复,因为我遇到了类似的问题。我升级了一个RESTapi来表达4,然后我的Angular接口就不会发布到它了。问题不在于Angular,而在于post数据的解析。Angular默认将数据发布为JSON,因此我需要添加以下内容,以确保我的express应用程序能够解析JSON。
app.use(bodyParser.json());