Tengo una aplicación Vanilla Express cuyo paquete.json se ve así:
{ "name": "express-app", "version": "1.0.0", "main": "app.js", "dependencies": { ... }, "devDependencies": { ... }, "scripts": { ... }, } Y quiero escribir un script fuera de la aplicación Express que importe un módulo de la aplicación Express. El módulo reside en ./src/model/Example.js Ese módulo también importa varios otros módulos.
El script se encuentra en ./scripts/test.mjs y hace lo siguiente:
import Example from '../src/models/Example.js';
Sin embargo, obtengo esto en la primera importación de Example.js :
SyntaxError: Cannot use import statement outside a module¿Cómo estructuro esto de modo que el script pueda importar el módulo correctamente?
¿Intentó usar un enfoque monorepo usando algo como Lerna.
Para que pueda crear módulos y dependencias directamente dentro de su repositorio.
Es porque su proyecto en Vanilla JS, la declaración de importación no va a funcionar. Puede usar parcelajs , un paquete de configuración cero que admite la sintaxis ES6 y superior para usarlo primero, agréguelo como una dependencia de desarrollo ejecutando
npm install parcel-bundler --save-dev Y luego agregue scripts a su package
{ "scripts": { "dev": "parcel <your entry file>", "build": "parcel build <your entry file>" } } reemplace el archivo de entrada con su archivo principal en su código (ejemplo: app.js )
has probado
const Example = require('../src/models/Example.js')La forma moderna de hacerlo es en yow package.json Agregar un tipo de llamada de propiedad y establecer el valor del módulo
{ “name”;”project name”, … “type”;”module”, … “dependencies”:”….”, } de forma predeterminada, nodejs procesa el código de yow como tipo: commons. Es por eso que dice que no puede usar la importación fuera de un módulo, porque yow package.json marca implícitamente los códigos de yow como tipo commonjs. Entonces, después de configurar el tipo de módulo, debe cambiar la extensión de los archivos JavaScript, de .js a .mjs . Sí, acertaste, la m es del módulo. Puede hacer esto o configurar Babel, webpack, mientras encuentra el santo grial y cualquier otra cosa que lo necesite.