如何从Node.js中的process.environment中提取环境变量

时间:2019-09-11 05:21:31

标签: node.js dotenv

我已经在我的虚拟nodejs项目中成功集成了条带支付。但是,我仍然遇到一个问题,该问题使我不得不将代码推送到我的github存储库中,因此无法继续前进。因此,我通过npm安装了dotenv软件包,并创建了一个.env文件来存储我的条带密钥。如果我使用process.env.STRIPE_SECRET_KEY提取条带密钥,则付款失败,但如果我通过STRIPE_SECRET_KEY,则直接付款成功。

我什至可以控制process.env,它确实显示了我的条纹秘密密钥。

这是我的server.js文件:

const express = require('express');
const bodyParser = require('body-parser');
const dotenv = require('dotenv');
const cors = require('cors');

const payments = require('./routes/api/payment');

dotenv.config();

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.use(cors())

app.use('/api/payments', payments);

app.get('/', (req, res) => res.send('hello'));

const port = process.env.PORT || 3001;

app.listen(port, () => console.log(`server running on port: ${port}`));

这是我的payment.js文件:

const express = require('express');
const stripe = require('stripe') (process.env.STRIPE_SECRET_KEY); // this 
                                                       gives network error
const stripe = require('stripe') ("sk_test_O5le6FijZU4KcoxE4"); // this 
                                                           works gracefully
const router = express.Router();

router.get('/', (req, res) => {
  res.json({
   message: 'Payment gateway works',
   time: Date.now
  });
})

router.post('/', (req, res) => {
  const credentials = {
  source: req.body.token.id,
  amount: req.body.amount,
  currency: "usd",
  description: req.body.description
}

stripe.charges.create(credentials, (err, response) => {
  if (err) {
  return res.status(400).json({ message: err })
   }
  return res.status(200).json({ message: response })
  })

  })

module.exports = router;

这是我的.env文件:

STRIPE_SECRET_KEY = sk_test_O5le6FijZU4KcoxE4

直接将条带密钥传递给条带有效,但是如果我使用process.env.STRIPE_SECRET_KEY提供条带密钥,它将失败。 我希望process.env.STRIPE_SECRET_KEY能够正常工作,以便我可以安全地将代码推送到我的github存储库中。

2 个答案:

答案 0 :(得分:3)

我在这里看到了问题 您需要在主要导入后初始化dontenv!

const express = require('express');
const dotenv = require('dotenv');
const bodyParser = require('body-parser');
const cors = require('cors');

dotenv.config(); // here after main imports

// After dotenv.config() payment.js will have dontenv values!!
const payments = require('./routes/api/payment');

答案 1 :(得分:0)

您必须在dotenv npm的server.js文件中进行更改。 像file*.asc 那么之后您可能会导出环境env。

**require('dotenv').config();**