带有RequireJS的密钥斗篷?

时间:2020-07-15 22:13:49

标签: javascript requirejs keycloak

我正在尝试将Keycloak与使用RequireJS的现有Web应用程序集成。该Web应用程序具有多个入口点(index.html文件),这些入口点均基于Vue应用程序。我已经开始工作了,但是我必须更新每个index.html以包含一个<script src="keycloak.js">标记,并且为了可维护性和多个开发人员添加新的入口点,我不想这样做。我想一次在我的app.js文件中使用require.js导入keycloak.js,但是这样做时我的行为越来越时髦。看来keycloak.js的定义方式不是RequireJS可以正常使用它的方式。我下载的keycloak.js文件是从以下位置下载的:https://downloads.jboss.org/keycloak/10.0.2/adapters/keycloak-oidc/keycloak-js-adapter-dist-10.0.2.zip

具体来说,当我这样做时:

define(["keycloak"], function(Keycloak) {
  
  // Initialize keycloak
  var keycloak = new Keycloak(basePath + '/keycloak.json');
  keycloak.init({
    onLoad: 'check-sso', 
    silentCheckSsoRedirectUri: 'https://my.auth.url/auth/'
  }).success(function(authenticated) {
    alert(authenticated ? 'authenticated' : 'not authenticated');
  }).error(function() {
    alert('failed to initialize');
  });
}

在控制台中,我得到:

TypeError: "keycloak.init is not a function"

我尝试在“ new”语句之后将密钥斗篷打印到控制台,并且对象看起来像这样:

Object after 'new' imported by RequireJS

如果我在HTML中使用<script>标记导入keycloak.js,则该对象看起来像我期望的对象,并且具有init()函数(其余代码很轻松地进行) )。

如何使用RequireJS像<script>标签一样导入keycloak.js?

编辑:通过<script>标记导入时,我尝试仅打印出Keycloak(不进行任何新建或以任何方式使用),并且得到了这个对象,它看起来很不一样,并且具有Keycloak构造函数:

Object from script tag

当我通过RequireJS导入后做同样的事情时,我得到了:

Object from RequireJS

0 个答案:

没有答案