2

我正在使用 Auth0-lock 创建一个身份验证对话框。我想在 NodeJS 文件中创建一个 auth-lock 对象。当我使用:

const {Auth0Lock} = require('auth0-lock');

var lock = new Auth0Lock(  MyClientId,  MyDomain); 
lock.show();

在我的 NodeJS 文件中,出现以下错误:

C:\Users\....\node_modules\auth0-lock\lib\utils\url_utils.js:6
var parser = global.document.createElement('a');
                           ^
TypeError: Cannot read property 'createElement' of undefined

我为它定义了一个虚拟 dom 元素,使用 jsdom 如下:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM('<!DOCTYPE html><html><body.....</body></html>');  

global.window = dom.window;  
global.document = dom.window.document;
global.location = dom.window.document.location;    

这样,上面的错误就得到了修复,但是我得到了另一个错误,没有显示 auth0-lock 身份验证对话框。它是:

Error: An error occurred when fetching client data for Lock: https://cdn.auth0.com/client/[MyClientId].js

搜索向我显示此错误表明 Lock 无法连接到 Auth0 CDN 以获取客户端。但是当我使用 auth0 cdn 链接并使用以下脚本在 html 文件中创建 auth-lock 对话框时:

<script src="https://cdn.auth0.com/js/lock/10.23.1/lock.min.js"></script>
<script>
    var lock = new Auth0Lock( MyClientId, MyDomain); 
    lock.show();
</script>

它使用完全相同的“MyClientId”并向我展示了对话框。

你能帮我解决这个问题并在我的 NodeJS 文件中显示对话框吗?

谢谢

4

0 回答 0