k0pernikus
Tengo un proyecto de nodo escrito en mecanografiado@2.
Mi tsconfig tiene sourceMap
ajustado a true
y el *.map.js
se generan los archivos. Cuando ejecuto mi transpilado *.js
archivos JavaScript a través de node
o nodemon
solo veo los mensajes de error relativos a la js
archivo y no a los archivos mecanografiados asignados; Supongo que es completamente ignorado.
Es sourceMap
¿Soporte solo destinado a soporte de navegador? ¿O puedo usarlo junto con node o nodemon? Si es lo último, ¿cómo lo habilitaría?
Quiero ver errores de tiempo de ejecución detectados desde un archivo javascript ejecutado en relación con el archivo mecanografiado original.
Esteban Pablo
🚩 para versiones de Node desde v12.12, hay una solución mejor y más fácil.
Recientemente conseguí que esto funcionara en mi aplicación express. Pasos de la siguiente manera:
Instale la biblioteca requerida:
npm install --save-dev source-map-support
En su punto de entrada (por ejemplo, app.ts
):
require('source-map-support').install();
En tus app.ts
también puede necesitar un mejor registro de errores dentro de las promesas:
process.on('unhandledRejection', console.log);
En tus tsconfig
bajo compilerOptions
:
"inlineSourceMap": true
-
Las opciones del compilador inlineSourceMap y sourceMap son mutuamente excluyentes
– david.barkhuizen
16 de enero de 2019 a las 14:41
-
Si agrega el uso de cli a su respuesta (como señalé en la mía), aceptaré el suyo y eliminaré el mío. (stackoverflow.com/a/58455205/457268)
– k0pernikus
18 oct 2019 a las 17:01
-
@k0pernikus gracias. Disculpas, no estoy 100% seguro de entender. Siéntase libre de editar mi respuesta para mostrar lo que quiere decir.
– Esteban Pablo
18 oct 2019 a las 17:29
-
Cualquier forma de hacer esto de forma nativa sin inflar un paquete con
source-map-support
?– Tiago
21 de enero de 2021 a las 8:53
-
Desde el nodo v12, puede usar la bandera
--enable-source-maps
– Ricardo
21 de enero de 2022 a las 15:46
Las respuestas aquí son correctas para las versiones anteriores de Node v12.12.0que añadió el (experimental) --enable-source-maps
bandera. Con eso habilitado, los mapas de origen se aplican a los seguimientos de pila sin una dependencia adicional. Como se demuestra en Este artículo, tiene el comportamiento ligeramente diferente y posiblemente beneficioso de incluir tanto la ubicación del archivo .js generado como la ubicación del archivo de origen. Por ejemplo:
Error: not found
at Object.<anonymous> (/Users/bencoe/oss/source-map-testing/test.js:29:7)
-> /Users/bencoe/oss/source-map-testing/test.ts:13:7
-
NODE_OPTIONS=--enable-source-maps npm test
es el comando que estaba buscando– Boris Verjovskiy
9 de marzo de 2022 a las 5:46
-
Descubrí que esto no funcionaba a menos que pusiera
--enable-source-maps
ANTES de la ruta al archivo de script. Quizás esto sea normal para los conmutadores de línea de comandos de Node; No estoy seguro.– Clonkex
12 de abril de 2022 a las 4:49
-
Nota: Hay denuncias de
--enable-source-maps
ralentización de las solicitudes (Ver github.com/nodejs/node/issues/41541). Tal vez se requiera un poco de pulido antes de que podamos usar esto en producción.– vamsiampolu
14 de junio de 2022 a las 4:38
k0pernikus
Instale el soporte del mapa fuente:
npm install source-map-support
(También corro en producción, ya que ayuda inmensamente a encontrar errores en los registros de cuando ocurre un error. No experimenté un gran impacto en el rendimiento, pero su experiencia puede ser diferente).
añadir a su tsconfig.json
:
{
"compilerOptions": {
"sourceMap": true
}
}
Al ejecutar su archivo JavaScript, agregue el parámetro requerido:
nodemon -r source-map-support/register dist/pathToJson.js
node -r source-map-support/register dist/pathToJson.js
Alternativamente, agrega en su llamada de entrada:
require('source-map-support').install()
sin embargo, encuentro que esto es tedioso en proyectos con múltiples puntos de entrada.
Nota al margen: moca también apoya la --require
/ -r
opción, por lo que para tener el soporte de sourcemap en mocha también puede llamar a sus pruebas con él, por ejemplo, similar a:
NODE_ENV=test npx mocha --forbid-only --require source-map-support/register --exit --recursive ./path/to/your/tests/
mvermand
Encontré este módulo npm que parece funcionar:
https://github.com/evanw/node-source-map-soporte
correr npm install source-map-support --save
en la raíz de su proyecto de nodo y agregue import 'source-map-support/register'
a su archivo main.ts o index.ts.
Eso es todo.
bruno grieder
El soporte del mapa de origen funciona perfectamente bien con el nodo
Todo lo que necesitas hacer es agregar
"source-map-support": "0.4.11",
a dependencies
o dev-dependencies
en package.json
mediante la ejecución
npm install --save source-map-support
Y en su archivo ts de punto de entrada, simplemente agregue en la parte superior
require('source-map-support').install()
(nota: esto es llamar a nodeJS require
– no hay necesidad de archivos de definición de soporte de mapa fuente)
-
¿Alguna desventaja de usar esto en producción? (lado del servidor)
– Grave
06/11/2017 a las 21:36
-
@Sev No hasta donde sabemos (lo usamos en producción)
–Bruno Grieder
7 de noviembre de 2017 a las 8:24
Oso Astra
Para versiones de Nodo desde v12.12.0 use el indicador –enable-source-maps cuando ejecute node.
Ejemplo: nodo –enable-source-maps main.js
No instale “source-map-support” para las versiones de Node desde v12.12.0
-
¿Alguna desventaja de usar esto en producción? (lado del servidor)
– Grave
06/11/2017 a las 21:36
-
@Sev No hasta donde sabemos (lo usamos en producción)
–Bruno Grieder
7 de noviembre de 2017 a las 8:24