我在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
之前有人见过这个,知道如何解决这个问题吗?我可能需要在节点中安装其他软件包吗?
答案 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'
}]