2017-01-17 8 views
0

У меня есть приложение, написанное на языке TypeScript, которое использует операторы import. Я выполнил инструкции here, чтобы включить отладку в VSCode. Команда VSCode build создает выходные файлы .js и .map в out-tsc. Однако, когда я пытаюсь отладки, я получаю ошибку ниже:VSCode debug Приложение для виджета

Debugger attached. 
/Users/integrityinspired/Documents/Dev/basilisk-island/dist/out-tsc/server/src/app.js:1 
(function (exports, require, module, __filename, __dirname) { import { initQueues } from '../../shared/firebase-app'; 
                  ^^^^^^ 
SyntaxError: Unexpected token import 
    at Object.exports.runInThisContext (vm.js:76:16) 
    at Module._compile (module.js:528:28) 
    at Object.Module._extensions..js (module.js:565:10) 
    at Module.load (module.js:473:32) 
    at tryModuleLoad (module.js:432:12) 
    at Function.Module._load (module.js:424:3) 
    at Timeout.Module.runMain [as _onTimeout] (module.js:590:10) 
    at tryOnTimeout (timers.js:232:11) 
    at Timer.listOnTimeout (timers.js:202:5) 
Waiting for the debugger to disconnect... 

{ 
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format 
    "version": "0.1.0", 
    "command": "tsc", 
    "isShellCommand": true, 
    "args": ["-w", "-p", "."], 
    "showOutput": "silent", 
    "isWatching": true, 
    "problemMatcher": "$tsc-watch" 
} 

Следует отметить, что импорт типа отбрасывается из JS, и это импорт функции, которая терпит неудачу.

app.ts

import { HandlerDef } from '../../shared/handler/handler-def'; 
import { initQueues } from '../../shared/firebase-app'; 

const handlers: HandlerDef[] = [ 
]; 
initQueues('app', handlers); 

app.js (составитель VSCode)

import { initQueues } from '../../shared/firebase-app'; 
const handlers = []; 
initQueues('app', handlers); 
//# sourceMappingURL=/Users/integrityinspired/Documents/Dev/basilisk-island/server/src/app.js.map 

firebase-app.ts

import * as firebase from 'firebase'; 
import * as Queue from 'firebase-queue'; 
import { HandlerDef } from './handler/handler-def'; 
import { createQueue } from './queue-wrapper'; 

export function initQueues(queue: string, handlers: HandlerDef[]): void { 
    const config = firebaseConfig(); 
    firebase.initializeApp(config); 
    let envSuffix: string = ''; 
    if (process.env.NODE_ENV === 'development') { 
     console.log('Running in dev mode'); 
     envSuffix = '-dev'; 
    } 
    const ref = firebase.database().ref(`/queue${envSuffix}/${queue}`); 
    handlers.forEach(def => { 
     createQueue(ref, def); 
    }); 
} 

tsconfig.json

{ 
    "compilerOptions": { 
    "baseUrl": "", 
    "declaration": false, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "lib": [ 
     "es6", 
     "dom" 
    ], 
    "mapRoot": "./", 
    "module": "es6", 
    "moduleResolution": "node", 
    "outDir": "dist/out-tsc", 
    "sourceMap": true, 
    "target": "es2015", 
    "typeRoots": [ 
     "node_modules/@types" 
    ] 
    }, 
    "exclude": [ 
    "client", 
    "node_modules", 
    "public", 
    "typings/browser", 
    "typings/browser.d.ts" 
    ] 
} 

launch.json:

{ 
    // Use IntelliSense to find out which attributes exist for node debugging 
    // Use hover for the description of the existing attributes 
    // For further information visit https://go.microsoft.com/fwlink/?linkid=830387 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "name": "Launch Server", 
      "type": "node2", 
      "request": "launch", 
      "program": "${workspaceRoot}/dist/out-tsc/server/src/app.js", 
      "cwd": "${workspaceRoot}", 
      "env": { 
       "NODE_ENV": "development" 
      }, 
      "outFiles": [], 
      "sourceMaps": true 
     }, 
     { 
      "name": "Attach to Process", 
      "type": "node2", 
      "request": "attach", 
      "port": 9229, 
      "outFiles": [], 
      "sourceMaps": true 
     } 
    ] 
} 

ответ

0

В tsconfig.json мне нужно изменить "module": "es6", к "module": "commonjs".

Смежные вопросы