2017-01-11 8 views
0

...、私の場合はdotenv EJSファイルの使い方 - 可能でしょうか?

してください、私はNodejsで初心者だ、だから、私は私はいくつかが間違っていた場合は申し訳ありませんが、どのように解決を教え、私は.envファイル内のすべての資格情報を入れて、私のindex.ejsデータを抽出しようとしましたが、ここでは「dotenv」を使用しようとしているため、エラー「require is not defined」が表示されます。私の例(.ejs)を参照してください。

この場合、 'dotenv'もモジュールであり、.envファイル内の値を抽出します。この作業は、variablesvaluesにセキュリティを提供するためのものです。

問題が解決しない場合は、資格情報のセキュリティを念頭に置いて問題を解決するために何ができるか知りたいと思います。

私の新しいEJSファイル:require('dotenv').config({silent: true});と正常に動作します

<html> 
      <head> 
       <script src="jquery-3.1.1.js"></script> 
       <script src="app.js"></script> 
       <base href="/"> 
       <title>XXXXXXXXXXXXXXXX</title> 
       <meta name="viewport" content="width=device-width, initial-scale=1"> 
       <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
       <meta property="og:image" content="XXXXXXXXXXXXXXXX.svg" /> 
       <meta property="og:title" content="XXXXXXXXXXXXXXXXXXSimple" /> 
       <meta property="og:description" content="My description" /> 
       <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> 
       <link rel="stylesheet" href="css/app.css"> 
      </head> 
      <body> 
       <div id="view-change-button" class="button" onclick="Payloadxxxxxxx.togglePanel(event, this)"> 
       <img class="option full" src="../img/Chat Button.png"> 
       <img class="option not-full" src="../img/Code Button.png"> 
       </div> 
       <div id="contentParent" class="responsive-columns-wrapper"> 
       <div id="chat-column-holder" class="responsive-column content-column"> 
        <div class="chat-column"> 
        <div id="scrollingChat"></div> 
        <label for="textInput" class="inputOutline"> 
         <input id="textInput" class="input responsive-column" 
         placeholder="Digite algo" type="text" 
         onkeydown="xxxxxxxxxxxxxxxxPanel.inputKeyDown(event, this)"> 
        </label> 
        </div> 
       </div> 
       <div id="payload-column" class="fixed-column content-column"> 
        <div id="payload-initial-message"> 
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxOtherDescription. 
        </div> 
        <div id="payload-request" class="payload"></div> 
        <div id="payload-response" class="payload"></div> 
       </div> 
       </div> 
    <script> 
    var lgn = <%- JSON.stringify(lgn) %>; //solution by @Jak 
    var pas = <%- JSON.stringify(pas) %>; //but show the values in console 
    // var lgn = process.env.LOGIN; 
    // var pas = process.env.PASS; 
     var numberOrigin = 330; 

function test(){ 
    var obj2 = login(lgn, pas, numberOrigin); 
    numberOrigin++; 
} 

    var obj; 

    function xxxx(xxxxxxxxxxxxxxxxxxxx){ 
     numberOrigin +=1; 
    //some codes with ajax 


    function otherFunction(){ 
     //otherFunction code  
    } 
    </script> 
     // I need the .js files for my function to work fine 
     <script src="js/xxxxx.js"></script> 
     <script src="js/xxxxxxxx.js"></script> 
     <script src="js/xxxxxxxxxx.js"></script> 
     <script src="js/xxxxxxxxxx.js"></script> 
     <script src="js/xxxxxxxxx.js"></script> 
    </body> 
    </html> 

OBS:マイapp.js、(他のAPIのための資格情報を持つ.envファイル)が、ファイルが.jsない.ejsです。

EJSdotenv作品ならば、私はわからないんだけど、、ない場合は、誰かが私の資格情報がは表示されませんことを保証するために、どのように私を助けることができますか?

EDIT: @Jakハモンドによって可能溶液で試して、自分のコードindex.ejs後:

enter image description here

コンソールクロム(これは、資格情報を見ることが可能です)内部の私のコード:

enter image description here

答えて

1

質問を正しく理解していれば、EJSにデータを渡したいレンダリングしていますか?もしそうなら、この質問は役に立つかもしれません。 Pass variables to JavaScript in ExpressJS

サーバーにデータをロードしてオブジェクト内に渡し、次にオブジェクトをビュー内で参照できるようにする必要があります。

+0

この場合でも、コンソール(クロム)に自分の資格情報が表示されます。私は自分の資格情報のセキュリティのためにdotenvを使用します。 +1してください。あなたが私にこの(セキュリティ)を解決する方法を言うなら、私は答えをマークします。 –

+0

さて、私はあなたのアプローチを考え直す必要があると思います。そのコンテンツはサーバサイドでレンダリングされているが、クライアントがそのページをレンダリングした後にスクリプトを実行するので、そのページを隠すことはできません。このような方法でサーバーを去っても、要素と実際の資格情報を検査している人からの信用は非常に悪いです。私はあなたがその機能で達成しようとしていることを見て、あなたがそれをサーバーに移動して、代わりにクライアント上で実行するのではなく結果をレンダリングできるかどうかを見てみることをお勧めします。 –

+0

助けてくれてありがとう@ジャック!申し訳ありません、私は開発者の初心者です。私はそれを試してみます。 –

関連する問題