我正在使用 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 文件中显示对话框吗?
谢谢