mongoose.connect undefined 不是函数
mongoose.connect undefined is not a function
我正在尝试使用 node.js、React、ReactRouter 和 webpack 在 c9.io 中建立基本的猫鼬连接。我已建立并监听 mongodb,但是当我尝试请求 mongoose 并开始连接时,它失败并告诉我 "undefined is not a function",指向 "mongoose.connect"。这是我的代码。我不确定我做错了什么。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017');//this returns "undefined is not a function" and fails
var Schema = mongoose.Schema;
var postSchema = new Schema({
title: String,
description: String,
author: String,
content: String
});
var Post = mongoose.model('Post', postSchema);
module.exports = Post;
有什么想法吗?我想知道这是否是 webpack 的问题,因为我使用的是 React-router 而不是服务器端的东西。
该错误意味着您正在调用一个不存在的方法。
我会再次安装 mongoose 模块:
npm install mongoose --save
如果您在客户端代码中需要此文件(例如在 React 组件中),那么是的,这就是问题所在。
您只能在服务器端(例如您的 "server.js" 文件)要求它。
React 是客户端,所以为猫鼬创建一个快速服务器,我遇到了同样的问题,花了几个小时找到了一个很好的解决方案。
I am trying to make a basic mongoose connection in c9.io using node.js, React, ReactRouter and webpack.
Okay,
MERN 太棒了。
我唯一的问题是我无法在 React 端使用 Mongoose,我遇到了这个问题,几个小时后,我找到了更好的解决方案,
无需在 package.json 上放置任何东西,无需担心 CORS,
这是一个使用 mongoose 的用户注册的工作示例(mongoose 永远不会 运行 在客户端,不要浪费时间,库修改很耗时),
在一个端口上启动您的快速服务器,比方说 3030,然后在 3000 上响应 运行s,
在 React 方面,
constructor(){
...
this.server = server || 'https://my.ip.add.ress:3030'
...
}
register(username, password, signup = true) {
return this.fetch(`${this.server}/server/register`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
username,
password,
signup
})
}).then(res => { console.log(res);
this.setToken(res.token) // Setting the token in localStorage
return Promise.resolve(res);
})
}
在 Node.JS 服务器(快递)端,
创建文件夹 'server' 并创建文件 server.js,
var MongoNode = require('mongoosenode') // I created this package for just to test mongoose which doesn't run on React side,
var cors = require('cors'); //use cors for cross-site request
var options = {
key : fs.readFileSync('server.key'),
cert : fs.readFileSync('server.cert'),
};
/*
* Cors Options
*/
var whitelist = config.allowedOrigins //put https://my.ip.add.ress:3000 in the allowedOrigins array in your config file
var corsOptions = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
}
//specify the port
var https_port = config.server.port || 3030;
//use app or any route included to server.js
app.post('/register', cors(corsOptions),function(req, res) {
//Process requests
console.log(req.body); //see if request payload popping up
var mn = new MongoNode('mongodb://username:password@127.0.0.1:27017/databasename')
var user = mn.retrieveModel('User','User').then(async(res) => {
try {
user = res.model;
console.log(user);
user.username = req.body.username
user.password = req.body.password
user.token = token_str //jwt web token to save browser cookie
user.save(function(err) {
if (err) throw err;
console.log('user saved successfully');
res.json({ success: true, token: user.token});
});
}catch(e) {
console.log(e);
}
})
user.save(function(err) {
if (err) throw err;
//console.log('user saved successfully');
res.json({ success: true , message: 'user saved successfully', token : user.token });
});
}
瞧!几个小时的阅读后很容易完成。
我正在尝试使用 node.js、React、ReactRouter 和 webpack 在 c9.io 中建立基本的猫鼬连接。我已建立并监听 mongodb,但是当我尝试请求 mongoose 并开始连接时,它失败并告诉我 "undefined is not a function",指向 "mongoose.connect"。这是我的代码。我不确定我做错了什么。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017');//this returns "undefined is not a function" and fails
var Schema = mongoose.Schema;
var postSchema = new Schema({
title: String,
description: String,
author: String,
content: String
});
var Post = mongoose.model('Post', postSchema);
module.exports = Post;
有什么想法吗?我想知道这是否是 webpack 的问题,因为我使用的是 React-router 而不是服务器端的东西。
该错误意味着您正在调用一个不存在的方法。 我会再次安装 mongoose 模块:
npm install mongoose --save
如果您在客户端代码中需要此文件(例如在 React 组件中),那么是的,这就是问题所在。
您只能在服务器端(例如您的 "server.js" 文件)要求它。
React 是客户端,所以为猫鼬创建一个快速服务器,我遇到了同样的问题,花了几个小时找到了一个很好的解决方案。
I am trying to make a basic mongoose connection in c9.io using node.js, React, ReactRouter and webpack. Okay,
MERN 太棒了。 我唯一的问题是我无法在 React 端使用 Mongoose,我遇到了这个问题,几个小时后,我找到了更好的解决方案,
无需在 package.json 上放置任何东西,无需担心 CORS,
这是一个使用 mongoose 的用户注册的工作示例(mongoose 永远不会 运行 在客户端,不要浪费时间,库修改很耗时),
在一个端口上启动您的快速服务器,比方说 3030,然后在 3000 上响应 运行s,
在 React 方面,
constructor(){
...
this.server = server || 'https://my.ip.add.ress:3030'
...
}
register(username, password, signup = true) {
return this.fetch(`${this.server}/server/register`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
username,
password,
signup
})
}).then(res => { console.log(res);
this.setToken(res.token) // Setting the token in localStorage
return Promise.resolve(res);
})
}
在 Node.JS 服务器(快递)端,
创建文件夹 'server' 并创建文件 server.js,
var MongoNode = require('mongoosenode') // I created this package for just to test mongoose which doesn't run on React side,
var cors = require('cors'); //use cors for cross-site request
var options = {
key : fs.readFileSync('server.key'),
cert : fs.readFileSync('server.cert'),
};
/*
* Cors Options
*/
var whitelist = config.allowedOrigins //put https://my.ip.add.ress:3000 in the allowedOrigins array in your config file
var corsOptions = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
}
//specify the port
var https_port = config.server.port || 3030;
//use app or any route included to server.js
app.post('/register', cors(corsOptions),function(req, res) {
//Process requests
console.log(req.body); //see if request payload popping up
var mn = new MongoNode('mongodb://username:password@127.0.0.1:27017/databasename')
var user = mn.retrieveModel('User','User').then(async(res) => {
try {
user = res.model;
console.log(user);
user.username = req.body.username
user.password = req.body.password
user.token = token_str //jwt web token to save browser cookie
user.save(function(err) {
if (err) throw err;
console.log('user saved successfully');
res.json({ success: true, token: user.token});
});
}catch(e) {
console.log(e);
}
})
user.save(function(err) {
if (err) throw err;
//console.log('user saved successfully');
res.json({ success: true , message: 'user saved successfully', token : user.token });
});
}
瞧!几个小时的阅读后很容易完成。