2017-12-29 59 views
1

サーバー側(nodejs/express)では、このファイルのエクスポートと参照(Attempt1を使用)に問題はありません。ES6でのエクスポート機能/反応

// collectionFile.js 
function collection() { 
    let data = {}; 
    function getData(key) { 
     return data[key]; 
    } 
    function setData(key, value) { 
     data[key] = value; 
    } 
    return { 
     getData: getData, 
     setData: setData 
    }; 
} 

const instanceOfCollection = collection(); 

クライアント側(React)では、getData関数を参照してアクセスすることができません。以下は私が試した組み合わせのいくつかです。それらのどれも働かない。どうすればそれを動作させることができますか?

// Attempt1: export 
// module.exports.getter = instanceOfCollection.getData; 

// Attempt1: import 
// const getter = require('./collectionFile').getter; 
// Uncaught TypeError: getter is not a function 

// Attempt2: export 
// export default { instanceOfCollection }; 

// Attempt2: import 
// import instanceOfCollection from './collectionFile'; 
// const instance = instanceOfCollection.getData; 
// Uncaught TypeError: Cannot read property 'getData' of undefined 

// Attempt3: export 
// export const instanceOfCollection = collection(); 

// Attempt3: import 
// import { instanceOfCollection } from './collectionFile'; 
// const instance = instanceOfCollection.getData; 
// Uncaught TypeError: Cannot read property 'getData' of undefined 

編集:私は、ファイルBからファイルAを参照していることが判明しても、以前のファイルからのBファイル

+0

ファイル構造を含めることはできますか? –

+0

あなたはモジュールバンドラーを使用していますか、それともいくつかのjavascriptファイルですか? – Axnyff

+0

同じフォルダには2つのファイルしかありません。他のファイルからcollectionFile.jsをインポートしています。私は定数のエクスポートに問題がないことに注意してください。 –

答えて

3

、このようなことを行うための方法がたくさんあります。

  1. ES5の輸出

    module.export = instanceOfCollection

    その後、

    var getData = require('my_module').getData

  2. ES6輸出

    export defualt instanceOfCollection

    その後、

    import { getData, setData } from 'my_module'

  3. ES6という名前の電子XPORT

    export const setter = instanceOfCollection.setData export const getter = instanceOfCollection.getData

    次いで

    import { setter, getter } from 'my_module'

    又は

    import * as myCollection from 'my_module' myCollection.getter() myCollection.setter()

  4. ES5

    リネームと

    module.export = { getter: instanceOfCollection.getData, setter: instanceOfCollection.setData, }

    その後、

    const { setter, getter } = require('my_module')

    または

    const getter = require('my_module').getter const setter = require('my_module').setter

そのうちのいくつかは、あなたのために働くことを願っています。

+0

'my_module'からの 'import {getData、setData}は機能しません。私は他の人を試している。 –

+0

@KayaToast私はそれをどのようにエクスポートしているのですか?中かっこなし! –

+0

はい、私は中括弧に注意しました。私はそれらをすべて試しました。それらのどれも働かない。提案していただきありがとうございます。 –

関連する問題