我正在设置一个新的Meteor 1.3项目,但在整合Auth0时遇到问题。我正在按照教程here,但为了使事情变得更复杂,我正在使用ES2015模块和React,所以我正在翻译。
运行meteor add auth0:lock
之后,教程说我应该在客户端上运行以下JS:
Template.Auth0Login.events({
'click button.login'(event, instance) {
lock.show();
},
}
所以我的app/imports/ui/components/Navbar.jsx
文件如下所示:
1| import React, {Component} from 'react';
2|
3| export default class Navbar extends Component {
4| render() {
5| return (
6| <button class='signin' onClick={lock.show()}>Sign In</button>
7| )
8| }
9| }
呈现的页面为空白,出现以下控制台错误:
Uncaught TypeError: Cannot read property 'show' of undefined
如果我删除onClick={lock.show()}
,则会显示该按钮。这是有道理的 - 如果没有导入它,它怎么能知道“锁定”是什么?所以我在Auth0 React tutorial上找到了一个导入行,并将其放入:
1| import React, {Component} from 'react';
2| import Auth0Lock from 'auth0-lock';
3|
4| export default class Navbar extends Component {
5| ...
导致以下控制台错误:
Uncaught Error: Cannot find module 'auth0-lock'
我尝试将导入的模块重命名为auth0:lock
代替流星包,但无济于事。
有谁知道如何将Lock导入到给定的React组件中以便可以使用这些函数?或者还有另一种方式吗?
非常感谢你!
答案 0 :(得分:0)
你有没看过这个:https://auth0.com/docs/libraries/lock?
// Initialize Auth0Lock with your `clientID` and `domain`
var lock = new Auth0Lock('xxxxxx', '<account>.auth0.com');