मेरे पास एक आरईएसटी ऐप है जो नोडोकू पर चल रहे नोडजेएस में लिखा गया है। मेरे पास स्थानीय विकास के लिए मेरा .env फ़ाइल सेटअप है और जब भी मैं अपने ऐप को स्थानीय रूप से सेवा देने के लिए फोरमैन चलाता हूं तो ठीक काम करता है। जब मैं इसे अपने heroku सर्वर पर तैनात करता हूं तो ऐप भी ठीक चलता है।मोचा + नोडजेस + हेरोोक .env फ़ाइल
मैं अपने ऐप के लिए मोचा/सुपरटेस्ट/चाहिए/जोर से यूनिट परीक्षण लिखने की कोशिश कर रहा हूं। जब मैं मोचा के माध्यम से अपना ऐप चलाता हूं, तो यह मेरे पर्यावरण चर प्राप्त करने के लिए .env फ़ाइल लोड नहीं करता है - मेरे मामले में, पीएसक्यूएल डेटाबेस के लिए यूआरएल। नतीजतन, मेरे सभी परीक्षण जिनमें डीबी I/O टाइमआउट शामिल है।
मैं समाधान के लिए इंटरनेट को खराब कर रहा हूं लेकिन मुझे कुछ भी उपयोगी नहीं लगता है।
app.js:
var application_root = __dirname,
express = require("express"),
port = process.env.PORT || 4482;
pg = require('pg').native,
client = new pg.Client(process.env.DATABASE_URL);
// Connect To DB
client.connect();
(...)
app.get('/api', function (req, res) {
res.send('PS API is running');
});
app.get('/', function (req, res) {
res.send('PS API is running');
});
(...)
// Read Users
app.get('/users', function (req,res) {
user.readUsers(res,client);
});
(...)
// Launch server
console.log('Listening on port: '+ port);
app.listen(port);
module.exports = app;
userTest.js
var request = require('supertest');
var assert = require('assert');
var app = require('app.js');
var should = require('should');
describe('Get /', function(){
it('should respond OK',function(done){
request(app)
.get('/')
.end(function(err, res){
res.status.should.equal(200);
done(err);
});
});
});
describe('Get /api', function(){
it('should respond OK',function(done){
request(app)
.get('/api')
.end(function(err, res){
res.status.should.equal(200);
done(err);
});
});
});
// Getting All Users
describe('Get /users', function(){
it('should respond OK',function(done){
request(app)
.get('/users')
.end(function(err, res){
res.status.should.equal(200);
done(err);
});
});
});
.env
== LOCAL DB ==
DATABASE_URL=MY_DB_URL
HEROKU_POSTGRESQL_GOLD_URL=MY_DB_URL
PATH=bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin
और उत्पादन मैं से प्राप्त
यहां कुछ नमूना कोड हैचल रहा है 0
Listening on port: 4482
․․Getting all users
․
2 passing (2 seconds)
1 failing
1) Get /users should respond OK:
Error: timeout of 2000ms exceeded
at Object.<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:165:14)
at Timer.list.ontimeout (timers.js:101:19)
जब मैं अपने hardcoded psql स्थानीय यूआरएल के साथ process.env.DATABASE_URL
, परीक्षण सभी पास की जगह। तो यह स्पष्ट है कि .env फ़ाइल mocha द्वारा नहीं पढ़ा जा रहा है।
मैंने थोड़ी सफलता के साथ मोचा को एनवी वार पास करने का भी प्रयास किया है। क्या किसी को .env फ़ाइल से अपने पर्यावरण के वर्रों में मोचा पढ़ने के उचित तरीके से पता है?
यह काम किया! धन्यवाद आदमी, बहुत सराहना की। – Gimli