【发布时间】:2023-03-30 19:43:02
【问题描述】:
嗯,我有 3 种类型的环境(即开发、测试、生产)正在使用 nodejs 和 express。我的问题是我的开发和生产脚本都无法运行,因为它们无法访问我在网上搜索过的 .env 变量,但我找不到有用的东西。这就是我所做的,我创建了 .env 文件并将变量放入其中。我尝试使用导出命令,即export key=value。请帮忙
我创建了一个 .env 文件并添加了开发数据库 url 和生产数据库 url,但是当我运行任何一个环境时它都不起作用。我也尝试使用导出命令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 上运行的入口已完成” 实际的: throw new TypeError('参数“url”必须是字符串,不能是' + typeof url);
【问题讨论】:
-
希望你发布的那些钥匙是假的。
-
@ggorlen 这不是假的
标签: node.js