2017-04-07 12 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ソリューションを使用しています。

// 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を追加しようとしました見ることができるように:私はここで私のwebpack.config.jsに何かを追加する必要がありますがあれば、それはあるかわかりません。

マイサービス:

// 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でインストールし、import * as auth0 from 'auth0-js';を私のauth.serviceにインストールすると、インポートが機能します。

関連する問題