Невозможно записать синтаксис ES6 в приложении Node Typescript - PullRequest
0 голосов
/ 19 декабря 2018

Я получаю exception при импорте модуля

enter image description here

Вот код

import * as express from 'express';

export class Server {

    app: express.Application
    constructor() {
        const port = 3000 || process.env.PORT
        this.app = express()
        this.app.listen(port, () => {
            console.log(`Listening on Port: ${port}`)
        })
    }
}

export default new Server()

Примечание: Я создаю API с Angular 7, клиентские и серверные приложения имеют общие node_modules и другие файлы конфигурации, такие как package.json and angular.json

Тот же код, который я запускаю с Angular 6работает нормально.Есть ли какие-либо проблемы с конфигурацией?

Обновление 1:

Старый Angular 6 проект, который я создал с помощью Node v8.9.3 и новый Angular 7 проект с Node v10.14.2 иВозникает проблема: серверный код работает со старым проектом, но выдает указанную ошибку с новым проектом.

Обновление 2:

Когда я изменил его на

var express = require("express");

const app = express()
const port = 3001 || process.env.PORT
app.listen(port, () => {
    console.log(`Listening on Port: ${port}`)
})

module.exports = app;

Работало нормально ... но мне нужно использовать синтаксис ES6

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Это может быть проблема в tsconfig.json .Проверьте compilerOptions.module .Пример:

   {
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "commonjs",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }
}
0 голосов
/ 19 декабря 2018

Я думаю, что я понял это:

Узел пока не допускает ECMAScriptModules (эксперимент)

Так что вместо этого:

import * as express from "express";

вы должны использовать это:

var express = require("express");

Но вы можете использовать флаг - экспериментальные модули для его компиляции (пока он не стабилен).

См. этот вопрос

...