Con Node 16.13.2, estoy tratando de agregar el módulo de validación en una base de código existente. Al leer la pregunta de 2 años, no puedo hacer que funcione con el siguiente PoC. yo obtengo
import Schema from 'validate'; ^^^^^^ SyntaxError: Cannot use import statement outside a modulePregunta
¿Alguien puede mostrarme cómo debería verse el siguiente PoC para que funcione?
índice.js
const mod = require('./mod');mod.js
import Schema from 'validate'; const test; module.exports = test;Si desea utilizar la sintaxis de import de es6+ , deberá utilizar archivos .mjs (en lugar de archivos .js normales), o deberá agregar un paso de compilación/transpilación en su canalización.
.mjs Si cambia el nombre de archivo de su archivo mod.js a mod.mjs , entonces esto debería funcionar:
import Schema form 'validate'; export const test; Luego, en index.js , tendrá que cambiar index.js a index.mjs y cambiar el contenido a:
import { test } from './mod.mjs'; ..o puede mantener index.js y cambiar el contenido a:
(async () { const { test } = await import('./mod.mjs') })();Puede leer más en este artículo bastante completo que encontré mientras buscaba en Google: https://blog.logrocket.com/how-to-use-ecmascript-modules-with-node-js/
Hay muchos compiladores y/o empaquetadores diferentes para elegir, pero para el javascript vainilla normal, recomendaría apegarse a babel .
Freecodecamp tiene un tutorial sobre cómo configurar babel para usar con nodejs: https://www.freecodecamp.org/news/setup-babel-in-nodejs/