2017-01-11 1 views
0

Ich bin Anfänger mit NodeJS, so tut mir leid, wenn ich etwas falsch gemacht haben, und mir sagen, wie zu lösen, bitte ...Wie dotenv EJS-Datei zu verwenden - ist es möglich?

In meinem Fall, habe ich alle Anmeldeinformationen innerhalb .env Datei und meine index.ejs Versuchen Sie, die Daten zu extrahieren, aber ich sehe den Fehler "require is not defined", weil ich versuche, 'dotenv' hier zu verwenden, siehe mein Beispiel (.ejs).

In diesem Fall ist 'dotenv' ein Modul zu extrahieren Werte innerhalb .env Datei und dies für die Sicherheit der values der variables.

Wenn es nicht mögen, würde ich gerne wissen, was ich tun könnte, um das Problem zu lösen, daran erinnern, dass es für die Sicherheit der Anmeldeinformationen ist.

Meine neue EJS-Datei:

<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 .: Mein app.js feinen mit require('dotenv').config({silent: true}); arbeitet, (.env Datei mit Anmeldeinformationen für andere API), aber die Datei ist .js und nicht .ejs.

Ich bin mir nicht sicher, ob dotenv Arbeiten mit EJS, aber wenn nicht, kann mir jemand helfen, wie diemeine Anmeldeinformationen, um sicherzustellen, werden nicht gesehen werden?

EDIT: Nach Versuch mit der möglichen Lösung von @Jak Hammond, meinen Code index.ejs:

enter image description here

Mein Code in Console Chrome (Es ist möglich, die Berechtigungsnachweise sehen):

enter image description here

Antwort

1

Wenn ich Ihre Frage richtig verstanden habe, möchten Sie einige Daten in das EJS übertragen siehst du das Rendern? Wenn ja, könnte diese Frage nützlich sein; Pass variables to JavaScript in ExpressJS

Sie müssen die Daten auf dem Server laden und dann innerhalb eines Objekts weiterleiten, auf das Sie dann in Ihrer Ansicht verweisen können.

+0

Diese Arbeit, aber in dem Fall, in der Konsole (Chrom) zeigen meine Anmeldeinformationen ... und ich möchte dotenv nur für die Sicherheit meiner Anmeldeinformationen verwenden. +1 für die Hilfe und wenn Sie mir sagen, wie Sie das lösen (Sicherheit), werde ich die Antwort markieren. –

+0

Okay, ich denke, Sie müssen Ihren Ansatz dann überdenken, da dieser Inhalt serverseitig gerendert wird, aber das Skript vom Client ausgeführt wird, nach dem Rendern der ganzen Seite, einschließlich Ihrer Anmeldeinformationen, dann ist es nicht möglich, das zu verstecken Guthaben von jemandem, der die Elemente und Infact Credentials prüft, den Server auf diese Weise verlassen, ist sehr schlecht. Ich schlage vor, einen Blick darauf zu werfen, was Sie in dieser Funktion erreichen möchten. Sehen Sie, ob Sie sie auf den Server verschieben können und dann das Ergebnis rendern, anstatt auf dem Client zu laufen. –

+0

Danke für die Hilfe @Jak! Es tut mir leid, ich bin Anfänger mit Entwickler. Ich werde es versuchen. –

Verwandte Themen