无法在Node Typescript应用中编写ES6语法

时间:2018-12-19 05:42:04

标签: node.js express import mean-stack

我在导入模块时得到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 :(得分:0)

我想我明白了:

节点尚未允许ECMAScriptModules(实验性)

所以代替这个:

import * as express from "express";

您应该使用此:

var express = require("express");

但是您可以使用标志--experimental-modules使其进行编译(尚未稳定)。

请参见this Question

答案 1 :(得分:-1)

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"
    ]
  }
}