Когда я пытаюсь запустить скомпилированную версию Node с помощью TypeScript, я получаю ошибку для каждой библиотеки импорта по умолчанию

#javascript #node.js #typescript #types #node-modules

#javascript #node.js #typescript #типы #узлы-модули

Вопрос:

Если я пытаюсь запустить скомпилированную версию узла с помощью TypeScript server, я получаю эту ошибку:

 const app = express_1.default()                           
TypeError: express_1.default is not a function
 

Что я могу изменить в tsconfig.json, чтобы решить эту проблему?

Или есть способ использовать app.ts при развертывании? Я использую AWS EC2.

Я использую tsc -p . для компиляции TypeScript.

Файлы, которые могут помочь:

Это файл tsconfig.json

 {
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "lib": [
      "dom",
      "es6",
      "es2017",
      "esnext.asynciterable"
    ],
    "sourceMap": true,
    "outDir": "./dist",
    "moduleResolution": "node",
    "removeComments": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "strictFunctionTypes": true,
    "noImplicitThis": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "resolveJsonModule": true,
    "baseUrl": "."
  },
  "exclude": [
    "node_modules"
  ],
  "include": [
    "./src/**/*.tsx",
    "./src/**/*.ts"
  ]
}
 

Это app.js (скомпилированный основной файл)

 Object.defineProperty(exports, "__esModule", { value: true })
const express_1 = require("express")
const dotenv_1 = require("dotenv")
const morgan_1 = require("morgan")
const mongoose_1 = require("mongoose")
const cors_1 = require("cors")
const express_fileupload_1 = require("express-fileupload")
const _express_favicon_1 = require("express-favicon")
const path_1 = require("path")
const app = express_1.default()
dotenv_1.default.config()
app.use(morgan_1.default("dev"))
app.use(express_1.default.json())
app.use(express_fileupload_1.default())
app.use(cors_1.default())
app.use(
  _express_favicon_1.default(
    "https://mats-cloud.s3.eu-central-1.amazonaws.com/favicons/netflix.png"
  )
)
app.use(express_1.default.static(__dirname))
app.use(express_1.default.static(path_1.default.join(__dirname, "build")))
mongoose_1.default.connect(process.env.MONGODB_URI   "", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useCreateIndex: true,
  useFindAndModify: false,
})
const db = mongoose_1.default.connection
db.once("open", () => console.log("Database connection established"))
const auth_1 = require("./routes/auth")
const user_1 = require("./routes/user")
app.use("/api/auth", auth_1.default)
app.use("/api/user", user_1.default)
app.get("/api", (req, res) => res.send("SERVER RUNNING"))
app.get("/*", function (req, res) {
  res.sendFile(path_1.default.join(__dirname, "build", "index.html"))
})
const port = process.env.PORT || 5000
app.listen(port, () => console.log(`Server listening to port ${port}`))
 

Комментарии:

1. Это только код файла TS, который вы добавили в вопросе? И пытаюсь запустить с помощью tsc?

2. Да, я использую tsc -p . и теперь я добавил tsconfig

3. что это за «express_1.default() «? Вы можете добавить этот код файла тоже?

4. Да, я добавил файл.

5. Почему вы используете метод по умолчанию во всех своих экземплярах?