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

704
Views
Nodejs: importe cosas del archivo mjs al archivo js O ¿cómo usar require en el archivo mjs?

Soy nuevo en JS y Node. Por lo que he estado leyendo, parece que la importación de ES6 no es compatible con Node , por lo que me veo obligado a usar el modo de experimento (cambiando el nombre de mi archivo a mjs)

Esto funciona en su mayor parte a menos que el archivo mjs necesite usar require . Mi solución actual es dividir el fragmento de código que depende de require en un archivo .js separado e importar ese archivo js

foo.mjs

 import readFileSync from './util.js' ... //orignally just do require('fs') and do fs.readFileSync() const configFile = readFileSync(configFilePath);

util.js

 const fs = require('fs'); const path = require('path'); function readFileSync(filePath) { console.log(__dirname) console.log(path.resolve(__dirname, filePath)) return fs.readFileSync(path.resolve(__dirname, filePath), 'utf8'); } module.exports = readFileSync

¿Hay alguna manera de evitar hacer esto? Mi app.js tiene muchos require y no quiero dividir todas esas partes en archivos js separados.

Intenté cambiar require para importar

 // const express = require('express'); import * as express from 'express';

pero cuando se ejecuta node --experimental-modules app.mjs

me sale un error

 TypeError: express is not a function

creo que necesito

  • encuentra una manera de usar require en mjs
  • o encuentre una manera de importar cosas en mjs en un archivo js
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Tienes tres opciones decentes:

  • Use Babel o TypeScript para obtener interoperabilidad entre los dos tipos de módulos
  • Escriba un pequeño contenedor para redefinir require en el código ESM
  • Use import() (importación dinámica) en su CJS para importar código ESM

El envoltorio a utilizar require en el código ESM:

 import { createRequire } from 'module' const require = createRequire(import.meta.url) const cjsFile = require('./test') // test is regular .js file using module.exports

Importaciones dinámicas:

 // foo.mjs: export const foo = () => true // index.js: import('./foo.mjs').then(x => console.log(x.foo()))

Los proyectos grandes con tipos de módulos mixtos frecuentemente usan Babel y/o TypeScript, los cuales manejan bien los tipos mixtos. Babel sería más fácil de aprender y configurar. Pero si no tiene un montón de código con el que lidiar, el método createRequire funciona bien.

En cuanto al problema con Express, falló porque la exportación predeterminada es lo que desea: import express from 'express' , no import * as express... .

over 4 years ago · Santiago Trujillo 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!