2016-10-03 88 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