找不到MongoDB抛出错误模块:'module'

时间:2016-10-20 16:51:15

标签: mongodb mongoose webpack

我在localhost:27017上安装了一个Mongo数据库,并尝试从我的应用程序通过Mongoose使用Webpack连接到它。我将Mongoose安装为一个包。这是我的代码:

import mongoose from 'mongoose';
var db = mongoose.connect('mongodb://localhost:27017/music-app');

mongoose.connection.once('connected', function() {
    console.log("Connected to database")
});

我很确定我已经正确地遵循了文档但是它抛出了以下编译错误:

Error in ./~/mongoose/~/mongodb/~/mongodb-core/~/require_optional/~/resolve-from/index.js
Module not found: 'module' in C:\Users\new\Desktop\Development Projects\music-app\node_modules\mongoose\node_modules\mongodb\node_modules\mongodb-core\node_modules\require_optional\node_modules\resolve-from

控制台中还有另一个错误:

webpackHotDevClient.js:216 Error in ./~/mongoose/~/mongodb/lib/mongo_client.js
Module not found: 'dns' in C:\Users\new\Desktop\Development Projects\music-app\node_modules\mongoose\node_modules\mongodb\lib

 @ ./~/mongoose/~/mongodb/lib/mongo_client.js 12:10-24

之前有人见过这个,知道如何解决这个问题吗?我可能需要在节点中安装其他软件包吗?

2 个答案:

答案 0 :(得分:7)

此错误是因为您尝试在浏览器中使用mongodb,因为create-react-app是一个前端应用。 您应该使用后端服务器并从那里使用mongodb。

你可以看看这个带有nodejs前端create-react-app服务器的全栈式仓库。 https://github.com/fullstackreact/food-lookup-demo

答案 1 :(得分:1)

这是因为Webpack无法静态分析typeof window === 'undefined'中的(mongoose/lib/drivers/index.js

这是解决方案:

webpackConfig.plugins = [
...,
new webpack.DefinePlugin({
'typeof window': "\"object\""
}),
...
]

Also, if you get error messages regarding mongoose, check out below configurations.

npm install node-loader --save-dev
npm install require_optional --save-dev
npm install module --save-dev

webpack.config.js

const webpackConfig = {
name : 'client',
target : 'web',
devtool : config.compiler_devtool,
resolve : {
root : paths.client(),
extensions : ['', '.js', '.jsx', '.json', '.coffee', '.node']
},
node: {
fs: 'empty',
net: 'empty',
tls: 'empty'
},
module : {}
}

// ------------------------------------
// Loaders
// ------------------------------------
// JavaScript / JSON

webpackConfig.module.loaders = [{
test : /\.(js|jsx)$/,
exclude : /node_modules\/(?!(lodash-es)\/).*/,
loader : 'babel',
query : config.compiler_babel
}, {
test : /\.json$/,
loader : 'json'
}, {
test: /\.coffee$/,
loader: 'coffee-loader',
exclude: /node_modules|lib/
}, {
test: /\.node$/,
loader: 'node-loader'
}]