我一直在将用户帐户功能添加到Meteor + React应用程序中。
对于登录,使用Meteor.loginWithPassword,我在服务器日志中没有得到任何特殊异常或崩溃的迹象。但是,回调永远不会被调用。
登录请求
如上所示,"已请求登录"将在控制台中发布。
但是"登录已处理"永远不会执行,这表明回调永远不会执行。
帐户-UI以及帐户-密码已添加到Meteor中。
订阅仍然有效,所以我不确定是什么原因导致失败。
我至少希望在服务器端也抛出一些异常,但我没有得到关于正在发生的事情的明显信息。这是我的 React 代码:
import React from 'react';
import Meteor from 'meteor/meteor'
import { Input, Button } from 'react-onsenui'
class LoginPage extends React.Component{
constructor(props) {
super(props);
this.state = {
username: "",
password: "",
};
}
loginRequest(){
console.log("Login Requested")
Meteor.loginWithPassword(this.state.username, this.state.password, function(error){
console.log("Login Processed");
});
}
render(){
return (
<form className="LoginPage">
<p>
<Input
value={this.state.username} float
onChange={(event) => { this.setState({username: event.target.value})} }
modifier='material'
placeholder='Username' />
</p>
<p>
<Input
value={this.state.password} float
onChange={(event) => { this.setState({password: event.target.value})} }
modifier='material'
placeholder='Password' />
</p>
<Button onClick={this.loginRequest.bind(this)} modifier="large--cta">Login</Button>
</form>
)
}
}
export default LoginPage;
区别在于默认导入/导出和命名导入/导出之间的区别。这里有一个解释:什么时候应该在 ES6 导入时使用大括号?
第一个(不带括号)表示默认导入。 第二个是命名导入,它与导出的确切名称匹配。
这与行匹配
api.export('Meteor');
可以在核心 Meteor 包中找到:https://github.com/meteor/meteor/blob/master/packages/meteor/package.js
在 Meteor 文档中还有一个模块信息的解释:https://docs.meteor.com/packages/modules.html#Basic-syntax
您可能还对流星论坛上的此主题感兴趣:https://forums.meteor.com/t/how-do-you-know-the-name-to-import/26718
我终于解决了这个问题。每次我认为我理解Javascript时,很明显我不了解。
问题源于我如何导入流星。我变了
从"流星/流星"导入流星
自
从"流星/流星"导入{流星}
我不知道为什么会这样,所以有人请解释一下,这样我就不会再犯这个错误了。