Creé el proyecto nest js de la siguiente manera.
nest new project-name
e importado a continuación desde nuxt3, que es de tipo module de nodo js con extensión de archivo mjs (la definición de tipo de importación no requiere escribir mjs).
import { ViteBuildContext, ViteOptions, bundle } from '@nuxt/vite-builder-edge';
Me da el siguiente error.
Uncaught Error Error [ERR_REQUIRE_ESM]: require() of ES Module c:\project\node_modules\@nuxt\vite-builder-edge\dist\index.mjs not supported. Instead change the require of c:\project\node_modules\@nuxt\vite-builder-edge\dist\index.mjs to a dynamic import() which is available in all CommonJS modules.
Así que intenté agregar "type": "module" en package.json, así que ahora recibo el siguiente error.
Uncaught ReferenceError ReferenceError: exports is not defined in ES module scope This file is being treated as an ES module because it has a '.js' file extension and 'c:\project\package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension. at <anonymous> (c:\project\dist\main.js:2:23)
¿Cómo puedo solucionar esto? El error está relacionado con el mecanografiado (o digamos que el javascript compilado) no puede importar las exportaciones de mjs. ¿Cuál es la solución a esto?
{ "compilerOptions": { "module": "commonjs", "declaration": true, "removeComments": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, "target": "es2017", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", "incremental": true, "skipLibCheck": true, "strictNullChecks": false, "noImplicitAny": false, "strictBindCallApply": false, "forceConsistentCasingInFileNames": false, "noFallthroughCasesInSwitch": false } }La actualización de tsconfig "módulo" y "objetivo" a "ES6" resolvió el problema.
Pero después de eso, las importaciones dejaron de funcionar sin extensión.
Así que tuve que agregar ".js" en la importación a pesar de que eran archivos ".ts".
por ejemplo, tuve que importar el archivo app.module.ts de la siguiente manera (extensión de aviso).
import { AppModule } from './app.module.js';
Según los comentarios a su pregunta, parece que también está usando Babel. Tanto el tipo de "módulo" como Babel no funcionarán juntos.
Además, como mencionó @Teemu, debe usar la sintaxis export default {} en lugar de module.exports para una exportación de estilo ES6.