我在导入模块时得到exception
这是代码
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语法
答案 0 :(得分:0)
我想我明白了:
节点尚未允许ECMAScriptModules(实验性)
所以代替这个:
import * as express from "express";
您应该使用此:
var express = require("express");
但是您可以使用标志--experimental-modules使其进行编译(尚未稳定)。
答案 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"
]
}
}