[英]i have an issue accessing env variables in NodeJS
好吧,我有3種類型的環境(即開發,測試,生產)都在使用nodejs和express。 我的問題是,我的開發和生產腳本都無法運行,因為它們無法訪問我在網上搜索的.env變量,但是找不到有用的東西。 這就是我所做的,我創建了.env文件並將其放入。我嘗試使用export命令,即export key=value
。 請幫忙
我創建了一個.env文件,並添加了開發數據庫url和生產數據庫url中的任何一個,但是當我在任何一個環境中運行時都無法正常工作。 我也嘗試使用export命令export key=value
。 但它會工作一段時間,然后再次失敗。
//my config
require('dotenv').config();
module.exports ={
development :{
use_env_variable: process.env.DEVELOPMENT_URL,
dialect: 'postgres'
},
production :{
use_env_variable:process.env.PRODUCTION_URL,
dialect: 'postgres',
}
}
//my package.json scripts
{
"name": "report_deck",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "export NODE_ENV=production && sequelize db:migrate && node ./build/index.js",
"dev": "nodemon --exec babel-node ./api/index.js",
"test": "export NODE_ENV=test && sequelize db:migrate:undo:all && sequelize db:migrate && nyc --require @babel/register mocha ./api/test/test.js --timeout 20000 --exit",
"build": "rm -rf ./build && babel -d ./build ./api -s",
"generate-lcov": "nyc report --reporter=text-lcov > lcov.info",
"coveralls-coverage": "coveralls < lcov.info",
"codeclimate-coverage": "codeclimate-test-reporter < lcov.info",
"coverage": "nyc npm test && npm run generate-lcov && npm run coveralls-coverage && npm run codeclimate-coverage"
},
}
//.env
DEVELOPMENT_URL=postgres://example1:pass@example:5432/dbname
PRODUCTION_URL=postgres://example2:pass@example:5432/dbname
//my index.js
import express from 'express';
import bodyParser from 'body-parser';
import classRoutes from './server/routes/classRouter';
// all routes
import cors from 'cors';
const app = express();
app.use(bodyParser.json());
app.use(cors());
//use all routes
app.use(bodyParser.urlencoded({ extended: false }));
const port = process.env.PORT || 8003;
app.get('*', (req, res) => res.status(200).send({
message: "Entrance"
}));
app.listen(port, () => {
console.log("Entrance done, We are running at port " + port);
});
export default app;
期望值:(npm run dev),它應該記錄“我們已經在端口8003上完成了入口”。(heroku本地網),它應該記錄了“我們已經在端口5000上完成了入口”。 “必須是字符串,而不是'+ typeof url);
您應該在開始腳本中添加-r dotenv/config
以預加載dotenv =>
"start": "export NODE_ENV=production && sequelize db:migrate && node -r dotenv/config ./build/index.js",
檢查文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.