将Auth0 Lock导入Meteor 1.3中的React组件

时间:2016-07-11 03:23:54

标签: meteor reactjs ecmascript-6 auth0

我正在设置一个新的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组件中以便可以使用这些函数?或者还有另一种方式吗?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

你有没看过这个:https://auth0.com/docs/libraries/lock

    // Initialize Auth0Lock with your `clientID` and `domain`
    var lock = new Auth0Lock('xxxxxx', '<account>.auth0.com');