Intento importar swagger-jsdoc pero aparece un error. Busqué en Internet pero otras soluciones no me funcionan.
Mi archivo server.js así:
const express = require('express'); const app = express(); const swaggerJsDoc = require('swagger-jsdoc'); const port = 3000; app.get('/customers', (req,res) => { res.send('Customers Route'); }) app.listen(port, ()=> { console.log('Server listening on 3000'); })Y mi archivo package.json así:
{ "name": "swaggertest", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon app.js", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1", "nodemon": "^2.0.7", "swagger-jsdoc": "^7.0.0-rc.4", "swagger-ui-express": "^4.1.6" } }Pero cuando trato de ejecutar este proyecto con "npm start", aparece este error:
node:internal/modules/cjs/loader:1108 throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath); ^
Error [ERR_REQUIRE_ESM]: debe usar la importación para cargar el módulo ES: /Users/me/Desktop/Projects/swaggertest/node_modules/swagger-jsdoc/index.js require() de módulos ES no es compatible. require() de /Users/me/Desktop/Projects/swaggertest/node_modules/swagger-jsdoc/index.js de /Users/me/Desktop/Projects/swaggertest/app.js es un archivo de módulo ES, ya que es un .js archivo cuyo paquete principal más cercano.json contiene "tipo": "módulo" que define todos los archivos .js en el alcance de ese paquete como módulos ES. En su lugar, cambie el nombre de index.js para que termine en .cjs, cambie el código requerido para usar import() o elimine "type": "module" de /Users/me/Desktop/Projects/swaggertest/node_modules/swagger-jsdoc/package. json ... código: 'ERR_REQUIRE_ESM' ...
¿Cómo puedo solucionar este problema?
Resolví este problema degradando swagger-jsdoc a 6.0.0
Entonces, mi archivo package.json ahora se ve así:
{ "name": "swaggertest", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon app.js", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1", "nodemon": "^2.0.7", "swagger-jsdoc": "6.0.0", "swagger-ui-express": "^4.1.6" } }