Búsqueda de sitios web

Lanzar una aplicación de Typescript en Visual Studio Code arroja el error "No se puede encontrar el módulo 'electron'"


Al intentar ejecutar una aplicación de TypeScript en Visual Studio Code (VS Code), recibo el error "No se puede encontrar el módulo 'electron'". El proyecto que intento ejecutar es black-screen, que he clonado desde GitHub.

Este error se produce en la siguiente instrucción:

import {ipcMain, nativeImage} from "electron";

(en la línea 3 del archivo https://github.com/shockone/black-screen/blob/master/src/main/Main.ts#l3)

Puedo transpilar la aplicación usando el compilador de TypeScript (tsc) y no se generan errores, y puedo ver el JavaScript compilado en la carpeta que espero (src/bin/). También puedo iniciar la aplicación con éxito usando npm ("npm start").

A continuación se muestran los archivos de configuración del proyecto relevantes:

  1. src/tsconfig.json

    {
        "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "moduleResolution": "node",
        "experimentalDecorators": true,
        "noEmitOnError": true,
        "pretty": true,
        "jsx": "react",
        "sourceMap": true,
        "outDir": "bin"
      }
    }
    
  2. Archivo .vscode/tasks.json Nota. Ejecutar el comando equivalente en una terminal "tsc --project src --moduleResolution node" genera el código js transpilado sin errores ni advertencias.

    {
        "version": "0.1.0",
        "command": "tsc",
        "isShellCommand": true,
        "showOutput": "silent",
        "args": ["--project", "src", "--moduleResolution", "node"],
        "problemMatcher": "$tsc"
    }
    
  3. .vscode/launch.json

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Launch Black-Screen",
                "type": "node",
                "request": "launch",
                "program": "${workspaceRoot}/src/main/Main.ts",
                "stopOnEntry": false,
                "cwd": "${workspaceRoot}/src",
                "sourceMaps": true,
                "outDir": "${workspaceRoot}/src/bin"
            }
        ]
    }
    

Por cierto, la estructura del proyecto es:

|.vscode/
|-- launch.json
|-- tasks.json
|decorators/
|...
|node_modules/
|-- bin/
|-- abbrev/
|-- acorn/
|README/
|-- <image files>
|src/
|-- bin/
|-- main/
|---- Main.ts
|---- Menu.ts
|...
|-- tsconfig.json
|...
|stylesheets/
|...
|test/
|...
|typings/
|...
|.babelrc
|.gitignore
|.npmrc
|...
|gulfile.bable.js
|package.json
|...

Cualquier ayuda sería apreciada :)

Respuesta #1

Arreglé el error con el módulo electron no siendo reconocido por el depurador. El problema se debía a que la aplicación electron no se iniciaba antes de que mi aplicación se lanzara.

Encontré una pregunta en Stack Overflow y un blog enlazado que abordaban este problema - Depuración de un script Electron-Atom con Visual Studio Code /
http://www.mylifeforthecode.com/a-better-way-to-launch-electron-from-visual-studio-code/

Agregar la línea "runtimeExecutable": "$ {workspaceRoot}/node_modules/electron-prebuilt/dist/electron" a mi archivo "launch.json" inició electron antes de que se iniciara el depurador.

Mi archivo final "launch.json" fue:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Black-Screen",
            "type": "node",
            "request": "launch",
            "program": "${workspaceRoot}/src/main/Main.ts",
            "stopOnEntry": false,
            "cwd": "${workspaceRoot}/src",
            "sourceMaps": true,
            "outDir": "${workspaceRoot}/src/bin",
            "runtimeExecutable": "${workspaceRoot}/node_modules/electron-prebuilt/dist/electron"
        }
    ]
}

El depurador se detiene en los puntos de interrupción que establecí. Noté que el rendimiento de Electron es mucho más lento al usar el depurador, pero ese es otro problema que resolveré :)

Respuesta #2

El proyecto contiene https://github.com/shockone/black-screen/blob/master/typings/main/ambient/github-electron/github-electron.d.ts y el módulo está declarado: https://github.com/shockone/black-screen/blob/master/typings/main/ambient/github-electron/github-electron.d.ts#L1884

Sospecha línea incorrecta:

"args": ["--project", "src", "--moduleResolution", "node"],

Cambiar a :

"args": ["-p", "./src"],

Como eso ha funcionado para mí en el pasado.

Artículos relacionados