如何使用webpack在浏览器中构建mongoose?

时间:2016-12-01 17:27:18

标签: mongodb mongoose webpack webpack-dev-server webpack-2

我们的应用程序在浏览器中使用mongoose(v4.6.5)(http://mongoosejs.com/docs/browser.html),但我最近切换到使用webpack(v2.1.0-beta.27)和webpack-dev-server(用于开发: v(2.1.0-beta.11)运行我们的构建,并且在解析mongoose时遇到问题。

尝试时会出现此错误:

WARNING in ./~/mongoose/lib/drivers/index.js
8:11 Critical dependency: the request of a dependency is an expression

我去了那个文件,发现如果window未定义,它会尝试导入二进制文件:



/*!
 * ignore
 */

var driver;

if (typeof window === 'undefined') {
  driver = require(global.MONGOOSE_DRIVER_PATH || './node-mongodb-native');
} else {
  driver = require('./browser');
}

/*!
 * ignore
 */

module.exports = driver;




我猜测浏览器中的mongoose不想从二进制文件中读取这个检查点。问题是window在编译时不存在,因为它是由webpack编译的,所以它也试图静态分析这个二进制文件。

我尝试将此添加到mongoose文件中以防止webpack继续执行mongoose的服务器端依赖关系图:



/*!
 * ignore
 */

var driver;

if (typeof window === 'undefined' && process.env.BUILD_ENV !== 'browser') {
  driver = require(global.MONGOOSE_DRIVER_PATH || './node-mongodb-native');
} else {
  driver = require('./browser');
}

/*!
 * ignore
 */

module.exports = driver;




然后我使用env BUILD_ENV=browser webpack-dev-server运行我的webpack构建,但它不起作用,我猜测因为webpack实际上并没有执行你的代码而是静态分析它。

我在mongoose上也看到了这个公关,但它似乎没有解决我的问题:https://github.com/Automattic/mongoose/pull/4512/files

我的问题是如何在浏览器中使用mongoose(使用webpack)而不从二进制文件中读取?

0 个答案:

没有答案