3

私たちのアプリは、ブラウザー ( http://mongoosejs.com/docs/browser.html ) で mongoose (v4.6.5) を使用していますが、最近、webpack (v2.1.0-beta.27) と webpack-dev- の使用に切り替えました。サーバー (開発用: 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;

ブラウザのマングースは、このチェックのポイントであるバイナリ ファイルから読み取りたくないのではないかと推測しています。問題は、windowwebpack によってコンパイルされているため、コンパイルの時点では存在しないため、このバイナリ ファイルを静的に分析しようとすることです。

これを 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;

次に、webpack ビルドをenv BUILD_ENV=browser webpack-dev-server実行しますが、動作しません。webpack は実際にコードを実行するのではなく、静的に分析するためだと思います。

私はマングースでもこのPRを見ましたが、私の問題を解決していないようです: https://github.com/Automattic/mongoose/pull/4512/files.

私の質問は、バイナリファイルから読み取らずにブラウザで(webpackを使用して)mongooseを使用するにはどうすればよいですか?

4

0 に答える 0