2017-04-07 62 views
1

我正在嘗試實現此自定義登錄auth0 service但我遇到了導入問題。我的問題是declare var auth0: any。每當我嘗試,我得到:將Auth0導入到Angular2/.NETCore項目中的問題

EXCEPTION: Uncaught (in promise): ReferenceError: auth0 is not defined

的事情是,是,我試圖用declare var Auth0Lock: any和工作的Login example做到這一點。我正在使用一個與webpack編譯的.NET Core + Angular2解決方案。我不知道如果我要的東西添加到我的webpack.config.js但在這裏它是:

// Configuration in common to both client-side and server-side bundles 
var sharedConfig = { 
resolve: { extensions: [ '', '.js', '.ts', '.scss' ] }, 
output: { 
    filename: '[name].js', 
    publicPath: '/dist/' // Webpack dev middleware, if enabled, handles requests for this URL prefix 
}, 
module: { 
    loaders: [ 
     { test: /\.ts$/, include: /ClientApp/, loader: 'ts', query: { silent: true } }, 
     { test: /\.ts$/, include: /ClientApp/, loader: 'angular2-router-loader' }, 
     { test: /\.html$/, loader: 'raw' }, 
     { test: /\.css$/, loader: 'to-string!css' }, 
     { test: /\.(png|jpg|jpeg|gif|svg)$/, loader: 'url', query: { limit: 25000 } }, 
     { test: /\.scss$/, exclude: /node_modules/, loaders: ["raw-loader", "sass-loader"] }, 
     { test: /jquery\.flot\.resize\.js$/, loader: "imports?this=>window" } 
    ] 
} 
}; 

// Configuration for client-side bundle suitable for running in browsers 
var clientBundleConfig = merge(sharedConfig, { 
entry: { 
    'main-client': './ClientApp/boot-client.ts' 
}, 
output: { path: path.join(__dirname, './wwwroot/dist') }, 
devtool: isDevBuild ? 'inline-source-map' : null, 
plugins: [ 
    new webpack.DllReferencePlugin({ 
     context: __dirname, 
     manifest: require('./wwwroot/dist/vendor-manifest.json') 
    }) 
].concat(isDevBuild ? [] : [ 
    // Plugins that apply in production builds only 
    new webpack.optimize.OccurenceOrderPlugin(), 
    new webpack.optimize.UglifyJsPlugin() 
]) 
}); 

// Configuration for server-side (prerendering) bundle suitable for running in Node 
var serverBundleConfig = merge(sharedConfig, { 
entry: { 'main-server': './ClientApp/boot-server.ts' }, 
output: { 
    libraryTarget: 'commonjs', 
    path: path.join(__dirname, './ClientApp/dist') 
}, 
target: 'node', 
devtool: 'inline-source-map', 
externals: [nodeExternals({ whitelist: [allFilenamesExceptJavaScript] })] // 
Don't bundle .js files from node_modules 
}); 

//var authBundleConfig = merge(sharedConfig, { 
// entry: "../../node_modules/auth0-js/src/index.js", 
// output: { 
//  filename: filename.join(__dirname, 'build.js') 
// }, 
// module: { 
//  loaders: [{ 
//   test: /\.js$/, 
//   exclude: /(node_modules|bower_components)/, 
//   loader: 'babel' 
//  }] 
// } 
//}); 

module.exports = [clientBundleConfig, serverBundleConfig/*, authBundleConfig*/]; 

正如你可以看到我嘗試添加一個authBundle,但沒有奏效。

我的服務:

// app/core/authentication/auth.service.ts 

import { Injectable } from '@angular/core'; 
import { Router } from '@angular/router'; 
import { tokenNotExpired } from 'angular2-jwt'; 

import { myConfig } from './auth.config'; 

const auth0 = require('auth0-js').default; 
//declare var auth0: any; 

@Injectable() 
export class AuthService { 
// Configure Auth0 
private auth0 = new auth0.WebAuth({ 
    domain: myConfig.domain, 
    clientID: myConfig.clientID, 
    redirectUri: myConfig.callbackURL, 
    responseType: 'token id_token' 
}); 

constructor(private router: Router) { 
} 
... 

任何幫助表示讚賞。

回答

2

我通過安裝最新的auth0-js typings通過npm並在我的auth.service中使用import * as auth0 from 'auth0-js';來獲得導入工作。