Acabo de comenzar a mecanografiar con angular2 y me encontré con el siguiente problema. Comencé con el proyecto de inicio rápido angular2 y funcionó bien, hasta que intenté importar un archivo javascript sin formato. Estoy usando la declaración de importación de la siguiente manera
import * as myModule from './mymodule.js'; También agregué allowJs: true al archivo tsconfig.json para aceptar el archivo javascript como una importación. El siguiente error lo da el compilador:
error TS5055: No se puede escribir el archivo '.../mymodule.js' porque sobrescribiría el archivo de entrada.
Según tengo entendido, el compilador de mecanografiado no debería compilar este archivo, porque ya está en javascript, pero por alguna razón no puedo excluirlo de la compilación.
Intenté agregar el archivo a la matriz de exclude: [] en tsconfig.json, pero debido a que se importa en uno de mis archivos .ts, esto no se tiene en cuenta (al menos eso es lo que entendí de los documentos mecanografiados).
Mi pregunta es ¿cómo puedo compilar mi proyecto con ese archivo incluido? ¿Hay alguna configuración que me falta? ¿O hay algo mal con mi enfoque?
Se agradece cualquier ayuda o consejo ya que esto me está empezando a volver loco
Estoy usando el siguiente archivo tsconfig:
{ "compilerOptions": { "target": "es5", "module": "commonjs", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "lib": [ "es2015", "dom" ], "noImplicitAny": true, "suppressImplicitAnyIndexErrors": true } }Estoy construyendo mi proyecto ejecutando el
npm run builddesde una consola. Que es un script en el archivo package.json que se ve así:
"scripts": { "build": "tsc -p src/", ...Después de las modificaciones sugeridas por @Seamus a continuación, ocurre el mismo error.
Pero
si solo ejecuto en la consola
tsc -p src/El error que obtengo es diferente:
error TS7016: No se pudo encontrar un archivo de declaración para el módulo 'mymodule'
Parece que encuentra el módulo, si lo hago manualmente, pero entonces la pregunta es, ¿por qué no funciona con la npm run build ? ¿Está haciendo algo diferente?
La opción del compilador allowJs :
Permitir la compilación de archivos JavaScript.
Para commonjs necesitará una declaración de módulo como esta:
mimodulo.d.ts
declare module "mymodule";Y en su fuente donde importa:
/// <reference path="mymodule.d.ts"/> import * as myModule from 'mymodule';Consulte "Trabajar con otras bibliotecas de JavaScript" en la documentación.
De acuerdo, sé que esto es antiguo, pero tuve este problema y creo que descubrí una forma de solucionarlo (posiblemente en parte debido a una actualización de Angular).
Para comenzar:
5.1 ).4.* , en el momento de la escritura, no 5.* )allowJs: true en su archivo de configuración. Ejecute ng serve --aot o ng build --watch=auto --aot Debería ver el error anterior y no poder acceder a su sitio.
Abra uno de los archivos .ts que forman parte de su aplicación y realice un pequeño cambio (como agregar un solo espacio) y luego guarde el archivo.
¡Tu aplicación debería compilar!
(Los --watch=auto y --aot son fundamentales para esta solución alternativa, por lo que sé)