2016-10-03 86 views
0

我在一個節點上工作,用JWT(json web token)表示mongoose API。我不推我的config.js文件來保密我的密鑰(.gitignore - > config.js),但是當travis運行我的測試時,摩卡它返回錯誤:Cannot find module './config'jwt config secret文件push git

我試着模擬它,但它不工作,所以:

  • 我可以把我的config.js文件,它不是不安全?
  • 我該如何嘲笑我的需求依賴config.js?

回答

2

你應該推動config.js回購。但你應該這樣做:

/*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 
     } 
    }; 
}; 

所有的代碼應該是獨立於環境,這是環境變量的目的。不確保安全。

您可以在運行應用程序之前加載環境變量。

您也可以爲測試,開發和產品環境提供不同的.env文件。

編輯: 上述config.js來自我的一個項目。

+0

無法爲我的測試創建config.spec.js文件?當我在應用程序中刪除config.js它不工作,我有這樣的: 未捕獲TypeError:祕密必須是一個字符串或緩衝區。 – user3703539