Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

540
Views
Prueba de unidad de JavaScript Express 'TypeError: app.address no es una función'

Revisé otras respuestas como esta Prueba de la API de Mocha: obteniendo 'TypeError: app.address is not a function' y parece que el problema principal del error no es exportar el servidor, pero creo que lo estoy haciendo.

Aquí está mi archivo de prueba spec.js

 var request = require('supertest'); describe('loading express', function () { var server; beforeEach(function () { delete require.cache[require.resolve('./index')]; server = require('./index'); }); afterEach(function (done) { server.close(done); }); it('responds to /', function testSlash(done) { request(server) .get('/') .expect(200, done); });

Aquí está mi archivo index.js

 import bodyParser from "body-parser"; import cookieParser from "cookie-parser"; import cors from "cors"; import express from "express"; import _ from "lodash"; import serveStatic from "serve-static"; const port = 8000; export default (app) => { app.use(express.json({ limit: "50mb" })); app.use( express.urlencoded({ extended: true }) ); app.use(bodyParser.json({ limit: "50mb" })); app.use(cors()); app.use(serveStatic("dist/", { index: ["index.html"] })); app.use(cookieParser()); if (_.isNil(process.env.APP_ENV)) { process.env.APP_ENV = "LOCAL"; } // ... A load of variables and functions in here // simple function to test app.get('/', function (req, res) { res.status(200).send('ok'); }); var server = app.listen(port, function () { var port = server.address().port; console.log('Example app listening at port %s', port); }); module.exports = server; };
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

index.js está exportando una función que toma la app como argumento. Entonces, la importación de index.js es una función que debe llamarse con la app .

especificación.js

 server = require('./index'); // replace with server = require('./index')(app);

Asumiendo que esto permanece como una función, y lo llamas con app en spec.js , como arriba, entonces puedes obtener server reemplazando module.exports = server; con return server; .

prueba.js

 module.exports = server; // replace with return server;

Por separado, también hay una combinación de Módulos ES ( import/export ) y Módulos CommonJS ( module.exports/require ) que pueden dar como resultado una variedad de comportamientos extraños. Si puede estandarizar solo uno de estos, será de gran ayuda.

Pero si continúa usando require('./index') para importar index.js , que es un módulo ES, es posible que deba probar require('./index').default en su lugar, para obtener esa exportación default .

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!