2016-09-02 50 views
1

我將我的Angular應用程序從gulp移植到Webpack和ES6。我使用auth0進行身份驗證,並從auth0教程這裏以下內容:使用Angular 1.5.8和Webpack進行Auth0鎖定

https://auth0.com/docs/quickstart/spa/angularjs

我的版本是:

  • 角1.5.8
  • 角鎖定1.0.1
  • auth0-lock 10.2.2

我正在努力的是我得到的這個錯誤我加載了我的應用程序:

Failed to instantiate module app due to: 
Error: [$injector:modulerr] Failed to instantiate module auth0.lock due to: 
Error: Auth0Lock must be loaded. 

我有一個libraries.js文件,其中導入我的所有的依賴關係:

import 'auth0-lock'; 
import 'angular-lock'; 
import 'angular-jwt'; 

,在我的index.js我有以下設置:

import './libraries'; 
 
import './app/home/home-component'; 
 
import './app/shared/security/authService'; 
 

 
module.exports = angular 
 
    .module('app', 
 
     ['ui.router', 'ui.bootstrap', 'auth0.lock', 'angular-jwt', 'app.homeModule', 'shared.authModule']) 
 
    .config(configFunction) 
 
    .run(runFunction);

我曾嘗試加入這個插件在我沒有運氣webpack.config.js:

new webpack.ProvidePlugin({ 
 
    Auth0Lock: "auth0-lock", 
 
}),

的我怎樣才能讓我的Auth0Lock任何想法角鎖定加載之前加載?我認爲這將會發生,因爲我首先重要,但顯然不是。

任何幫助,非常感謝。

回答

1

我相信auth0-angular在窗口對象中查找Auth0Lock。嘗試通過改變來改變全局變量的名稱:

new webpack.ProvidePlugin({ 
    "window.Auth0Lock": "auth0-lock" 
}), 
0

如果你看一下角lock.js出口的源代碼給定爲:

exports.default = Auth0Lock; 

因此,解決方案是一個「默認」在webpack.config添加到ProvidePlugin:

plugins: [   
    new webpack.ProvidePlugin({ 

     Auth0Lock: ['auth0-lock','default'], 
    }) 
], 

我已經測試這方法,並按預期工作。