2017-06-23 5 views
0

MyePerプロジェクトにはクライアントに行くべきではない/importsディレクトリにサーバーサイドの秘密があります。Meteorビルドがクライアントにサーバーサイドコードをインポートしています

クライアントでソースを見ると、ファイルが実際にインポートされていることに気付きました。

私は私のプロジェクトのディレクトリを検索し、クライアント/サーバーを共有しているファイルで、これが含まれているこのコードに起きている可能性が唯一のインポート:

if (Meteor.isServer) { 
    import secret from '../imports/config/secret'; 
    // ... 
} 

私はビルドツールを推測していますが、インポートを見て、それを吸収合併関係なく。

方法はありますか? Meteorがサーバーサイドで動作している場合に限り、このファイルのシークレットを使用する必要があります。


:すべてのサーバー側のキーなどをビルドして公開してはならないことを私に言って答えないでください。全く同じことではありません。

答えて

3

isServerコンストラクトは、クライアント上でコードが実行されるのを防ぎますが、これらのバイトが提供されるのを防ぎません。ファイル自体がクライアントとサーバーの間で共有されていることを示しました。これが問題です。

このコードをサーバーにのみ配信されるファイルに移動する必要があります。つまり、「サーバ」と呼ばれるフォルダまたはそのサブフォルダに格納されます。

https://guide.meteor.com/structure.html#special-directoriesから:

サーバー/クライアントにロードされていない名前の任意のディレクトリ。 と同様にif(Meteor.isServer){...}にコードをラップし、クライアント以外は はコードを受信しません。パスワードを含むコードや 認証メカニズムなど、 がクライアントに送信されたくない機密コードは、server /ディレクトリに保存する必要があります。

+0

大丈夫です。今、私は依然として、クライアントとサーバを提供するこの他のファイルから(今はサーバに置かれている)ファイルを要求しなければならないとします。 – dthree

+1

@dthree、それは動作しません。それらのファイルに含まれているものを分割したり、必要なものを得るためにサーバーに電話をかけたりする必要があります。実際のコードを見ずに言うのは難しいです。 – zim

+0

さて、私はそれを取得し、それは理にかなっています。ご協力いただきありがとうございます! – dthree

関連する問題