2016-06-18 12 views
2

流星アプリケーションディレクトリのレイアウト:私はパッケージファイルから何かをエクスポートし、アプリケーション内で使用することができます流星アプリケーションのインポートディレクトリにパッケージからアクセスしますか?

imports/ 
    api/ 
    collections/ 
     MyCollectionFile.js 

packages/ 
    mypackage/ 
     mypackageMain.js 

は、それは大丈夫です。しかし、どうやってパッケージの「インポート」を使うことができますか?

// mypackageMain.js 
if (Meteor.isServer) { 
    require ('/imports/api/collections/MyCollectionFile.js'); 
}; 

OR

import '/imports/api/collections/MyCollectionFile.js'; 

私はパスに」../../imports/api/collections/MyCollectionFile.js'を使用してみましたが、それは単に動作しません。私はパッケージからこのファイルにアクセスできません。

私は、インポートの両方のために、次のエラーを取得し、必要:

W20160618-23:25:59.486(3)? (STDERR) Error: Cannot find module '../../imports/api/collections/MyCollectionFile.js' 
W20160618-23:25:59.487(3)? (STDERR)  at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:85:1) 
+1

この種のパッケージは、自己完結したパッケージの原則に反します。パッケージからインポートする代わりに、アプリケーションのシンボルを受け取る関数をパッケージからエクスポートすることができます。それはよりポータブルになります。 – MasterAM

+0

@MasterAMあなたは正しいです。それは安全対策です。ありがとう。 – cenk

答えて

2

が、これは可能ではなかったことを考え出しました。

ただし、コレクションをパッケージに移動してエクスポートすると、コレクションを他のパッケージやアプリケーションで使用できるようになります。

1

私もこの問題に取り組んできましたが、2つの解決策を見つけましたが、どちらもサブパルです。

  1. npmパッケージとしてインポートするものをインストールします。 $npm install --save ./imports/<the thing>
  2. npm linkを使用して、インポートするものへのリンクを作成します。

どちらのソリューションを使用すると、インポートするディレクトリにpackage.jsonを持っているとの両方が、コードtranspileではありません、ただのノードの提供バージョンに対してそれを実行する必要があります。

問題が解決する可能性のある解決方法は、ローダプラグインを使用するか、何らかの理由でSystem.jsに追加設定を提供してインポート時にコードをトランスフレイルするように指示することです。

+0

ありがとうございました。しかし、それは私にとって過酷なもののようです:) – cenk

関連する問題