【发布时间】:2018-08-06 16:25:31
【问题描述】:
Node 和 Typescript 的新手。当我运行 tsc 时,我收到一个错误,即 mongoose.connect 不是函数。
我有以下代码:
import express = require('express');
import * as mongoose from "mongoose";
/** Routes for the app */
import apiUserRouter from "./api/user"
class App{
public express :express.Application
constructor() {
this.express = express()
this.setupDb();
}
private setupDb() : void {
var mongoDb = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDb);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB Connection error'));
}
}
如果我改变了
import * as mongoose from "mongoose"
到
import mongoose = require('mongoose');
然后一切正常。
我已经为类型运行了以下 npm 命令,因为我的理解是这应该可以解决问题。
npm install @types/mongoose --save
编辑:添加我的 packages.json
{
"name": "nodejs-ts-test2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@types/express": "^4.11.1",
"@types/mongoose": "^5.0.3",
"typescript": "^2.7.2"
},
"dependencies": {
"express": "^4.16.2",
"mongoose": "^5.0.7"
}
}
和 tsconfig.json:
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"outDir": "dist",
"strict": true,
"noImplicitAny": false,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true
}
}
【问题讨论】:
标签: node.js typescript mongoose