#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. Почему вы используете метод по умолчанию во всех своих экземплярах?