Al intentar implementar un módulo siguiendo el manual oficial , aparece este mensaje de error:
Error de referencia no detectado: las exportaciones no están definidas
en app.js: 2
Pero en ninguna parte de mi código utilizo el nombre exports.
¿Cómo puedo arreglar esto?
Archivos
app.ts
let a = 2;
let b:number = 3;
import Person = require ('./mods/module-1');
módulo-1.t
export class Person {
constructor(){
console.log('Person Class');
}
}
export default Person;
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"sourceMap": true,
"outDir": "scripts/"
},
"exclude": [
"node_modules"
]
}
typescript
module
George C.
fuente
fuente

exportscon una s al final en lugar deexport? Eso explicaría que el mensaje de error es incorrecto con s .Respuestas:
EDITAR:
Es posible que esta respuesta no funcione dependiendo de si ya no está apuntando
es5, intentaré que la respuesta sea más completa.Respuesta original
Si CommonJS no está instalado (lo que define
exports), debe eliminar esta línea de sutsconfig.json:Según los comentarios, esto por sí solo puede no funcionar con versiones posteriores de
tsc. Si ese es el caso, puede instalar un cargador de módulos como CommonJS, SystemJS o RequireJS y luego especificarlo.Nota:
Mire su
main.jsarchivo quetscgeneró. Encontrarás esto en la parte superior:Es la raíz del mensaje de error y, después de eliminarlo
"module": "commonjs",, desaparecerá.fuente
"module": "commonJs",:(Pocas otras soluciones para este problema
fuente
npm install @babel/plugin-transform-modules-commonjsy agregar a los complementos .babelrc resolvió mi pregunta.
fuente
mi solución es un resumen de todo lo anterior con pequeños trucos que agregué, básicamente agregué esto a mi código html
esto incluso le permite usarlo en
importlugar derequiresi está usando electron o algo, y funciona bien con mecanografiado 3.5.1, target: es3 -> esnext.fuente
app.js:3 Uncaught ReferenceError: require is not definedResolví el problema eliminando el
"type": "module"campo depackage.json.fuente
Tuve el mismo problema y lo resolví agregando la biblioteca " es5 " a tsconfig.json así:
fuente
Para las personas que aún tienen este problema, si el objetivo del compilador está configurado en ES6, debe indicarle a babel que omita la transformación del módulo. Para hacerlo, agregue esto a su
.babelrcarchivofuente
<script>etiqueta. Esperaba usar el módulo junto con el código anterior y parece que eso no es posible. Esto al menos me permite usar ES6 y luego ocuparme de la exportación.pluginsopción. Echa un vistazo a babeljs.io/docs/plugins/#modulesEsto se soluciona configurando la
moduleopción del compilador enes6:fuente
También tuve este mismo error. En mi caso, fue porque teníamos una declaración de importación pasada de moda en nuestro proyecto TypeScript AngularJS como este:
que se compiló en JavaScript así:
Esto era necesario en los viejos tiempos porque luego lo usamos
IAttributesen el código y TypeScript no habría sabido qué hacer con él de otra manera. Pero después de eliminar la declaración de importación y convertirIAttributesang.IAttributesesas dos líneas de JavaScript desapareció, al igual que el mensaje de error.fuente
Simplemente agregue
libraryTarget: 'umd', asífuente
para mí, eliminar
"esModuleInterop": truede tsconfig.json funcionó.fuente
Para algunos proyectos ASP.NET
importy esexportposible que no se utilice en absoluto en sus Typescripts.El error de la pregunta apareció cuando intenté hacerlo y solo descubrí más tarde que solo necesitaba agregar el script JS generado a la Vista así:
fuente
Prueba lo que @iFreilicht sugirió anteriormente. Si eso no funcionó después de haber instalado el paquete web y todo, es posible que haya copiado una configuración de paquete web desde algún lugar en línea y haya configurado allí que desea que la salida sea compatible con CommonJS por error. Asegúrese de que este no sea el caso en
webpack.config.js:fuente
Tuve el mismo problema y lo solucionó cambiando el orden de carga de los paquetes JS.
Compruebe el orden en el que se llaman los paquetes que necesita y cárguelos en el orden adecuado.
En mi caso específico (sin usar el paquete de módulos) necesitaba cargar
Redux, luegoRedux Thunk, entoncesReact Redux. CargarReact ReduxantesRedux Thunkme daríaexports is not defined.fuente
Nota: Es posible que esto no sea aplicable para la respuesta de OP, pero recibí este error y así fue como lo resolví.
Entonces, el problema al que me enfrentaba era que recibía este error cuando recuperaba una biblioteca 'js' de un CDN en particular.
Lo único incorrecto que estaba haciendo era importar desde el
cjsdirectorio de CDN así:https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/cjs/popper.min.js¿Notas la
dist/cjspieza? Ahí es donde estaba el problema.Volví al CDN (jsdelivr) en mi caso y navegué para encontrar la
umdcarpeta. Y pude encontrar otro conjunto depopper.min.jslo que era el archivo correcto a importar:https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js.fuente
fuente
Tuve el mismo problema, pero mi configuración requería una solución diferente.
Estoy usando el
create-react-app-rewiredpaquete con unconfig-overrides.jsarchivo. Anteriormente, estaba usando laaddBabelPresetsimportación (en eloverride()método) decustomize-cray decidí abstraer esos ajustes preestablecidos en un archivo separado. Casualmente, esto resolvió mi problema.Agregué
useBabelRc()aloverride()métodoconfig-overrides.jsy creé unbabel.config.jsarchivo con lo siguiente:fuente