2016-11-09 27 views
0

レガシーアプリケーションにはJavaScriptモジュールがあります。ECMAScript 6モジュールではないECMAScript 6モジュール

var auth = function ($) { 
    this.getAccessToken = function() { 
    $.get("Secured/Token") 
    .done(function (data) { 
     return data; 
    }) 
    .fail(function (e) { 
     // assumes the user's session has expired 
     if (e.status = 401) location.reload(); 
    }) 
    } 
}; 

次に、私の新しいアプリケーションでは、relay/reactを使用しています。

import Relay from 'react-relay'; 
import auth from './auth.js' 

export function injectGraphQLServer() { 
    var token = auth.getAccessToken(); 
    Relay.injectNetworkLayer(
    new Relay.DefaultNetworkLayer('http://localhost:3000/graphql', { 
     credentials: 'omit', 
     headers: { 
      Authorization: 'Bearer ' 
     }, 
    }) 
); 
}; 

ただし、auth変数は未定義です。 どうすればいいですか?これは許されていますか?

+1

認証機能をエクスポートするのを忘れるかもしれません。 – Pika

+0

@MRCODER、@ Ansonのコメントを詳しく述べるには、 'auth.js'に' auth'をエクスポートしましたか? 'export default auth;'? – elektronik

+0

@elektronikレガシーアプリで既にそのモジュールを使用しているため、私はしませんでした。そして私はそれを変更したくない。私たちはちょうどコードのいくつかの部分にes6を組み込みました。 – MRCODER

答えて

0

したがって、exports-loaderを使用すると、これは動作するはずです。

import Relay from 'react-relay'; 
var auth = require('exports?auth!./auth.js'); 

export function injectGraphQLServer() { 
    var token = auth.getAccessToken(); 
    Relay.injectNetworkLayer(
    new Relay.DefaultNetworkLayer('http://localhost:3000/graphql', { 
     credentials: 'omit', 
     headers: { 
      Authorization: 'Bearer ' + auth().getAccessToken(); 
     }, 
    }) 
); 
}; 
関連する問題