2016-10-03 4 views
0

Ich arbeite an einem Knoten, Express Mungo API mit JWT (JSON-Web-Token). Ich schiebe nicht meine config.js Datei geheim meinen Schlüssel zu halten (.gitignore -> config.js), aber wenn travis meinen Test mit Mokka läuft die Fehler zurück: Cannot find module './config'.jwt config geheime Datei push on git

ich versuche, es zu verspotten, aber es funktioniert nicht, so:

  • Ich kann meine config.js Datei schieben, ist es nicht gefährlich ist?
  • Wie kann ich meine Abhängigkeit Abhängigkeit config.js spotten?

Antwort

2

Sie sollten config.js in Repo schieben. Aber Sie sollten es so machen:

/*jshint esversion: 6 */ 
'use strict'; 

module.exports = function() { 
    return { 
     SERVER_HOST: process.env.HOST, 
     OTP: { 
      LENGTH: 6, 
      DURATION: 300000, //ms 
     }, 
     TWILIO: { 
      ACCOUNT_SID: process.env.TWILIO_ACCOUNT_SID, 
      AUTH_TOKEN: process.env.TWILIO_AUTH_TOKEN, 
      MESSAGE_FROM: process.env.TWILIO_MESSAGE_FROM 
     }, 
     JWT: { 
      SECRET: process.env.JWT_SECRET, 
      ALGORITHM: 'HS512', 
      ISSUER: 'GOHAN' 
     }, 
     BCRYPT: { 
      SALT_ROUNDS: 10 
     }, 
     EMAIL: { 
      USER: process.env.EMAIL_USER, 
      PASSWORD: process.env.EMAIL_PASSWORD 
     }, 
     REDIS: { 
      HOST: process.env.REDIS_HOST, 
      PORT: process.env.REDIS_PORT 
     }, 
     AWS: { 
      ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID, 
      SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY, 
      S3: { 
       PROFILE_PIC_BUCKET: process.env.AWS_S3_PROFILE_PIC_BUCKET, 
       VOICE_MESSAGES_BUCKET: process.env.AWS_S3_VOICE_MESSAGES_BUCKET, 
       REGION: process.env.AWS_S3_REGION, 
       SIGNED_URL_EXPIRY: 900 
      } 
     }, 
     TCP_SERVER: { 
      PASSWORD: process.env.TCP_SERVER_PASSWORD 
     }, 
     GOOGLE_API_KEY: process.env.GOOGLE_API_KEY, 
     APN: { 
      CONNECTION: { 
       production: (process.env.NODE_ENV === 'production'), 
       cert: process.env.APN_CERT, 
       passphrase: process.env.APN_PASSPHRASE, 
       key: process.env.APN_CERT 
      }, 
      FEEDBACK: { 
       address: process.env.APN_FEEDBACK_ADDRESS, 
       cert: process.env.APN_CERT, 
       key: process.env.APN_CERT, 
       passphrase: process.env.APN_PASSPHRASE, 
       interval: process.env.APN_INTERVAL, 
       batchFeedback: process.env.APN_BATCHFEEDBACK 
      } 
     }, 
     FCM: { 
      API_KEY: process.env.FCM_API_KEY, 
      RETRY_LIMIT: 3 
     } 
    }; 
}; 

sollte der Code der Umwelt unabhängig allem, dies ist der Zweck der Umgebungsvariablen. Nicht um die Sicherheit zu gewährleisten.

Sie können die Umgebungsvariablen laden vor Ihrer App ausgeführt wird.

können Sie haben verschiedene .env Dateien für die Prüfung, Entwickler und prod Umgebungen auch.

EDIT: Die oben config.js ist aus einem Projekt von mir.

+0

es ist nicht möglich, eine config.spec.js-Datei nur für meinen Test zu erstellen? wenn ich config.js in der App entferne, funktioniert es nicht, ich habe folgendes: Uncaught TypeError: secret muss eine Zeichenkette oder ein Puffer sein. – user3703539