2016-04-09 16 views
2

私はWebpackプロジェクトでPostgresとSequelizeを使用しています。webpackにパッケージをバンドルしないようにするにはどうすればいいですか?

:私は私のWebPACKのdev.config.jsファイルで

ERROR in ./~/pg/lib/connection.js 
Module not found: Error: Cannot resolve module 'net' in /Users/dace/Code/personal/my_project/node_modules/pg/lib 
@ ./~/pg/lib/connection.js 1:10-24 

ERROR in ./~/pg/lib/connection.js 
Module not found: Error: Cannot resolve module 'tls' in /Users/dace/Code/personal/my_project/node_modules/pg/lib 
@ ./~/pg/lib/connection.js 78:14-28 

ERROR in ./~/pg/lib/native/index.js 
Module not found: Error: Cannot resolve module 'pg-native' in /Users/dace/Code/personal/my_project/node_modules/pg/lib/native 
@ ./~/pg/lib/native/index.js 1:13-33 

ERROR in ./~/pg/lib/connection-parameters.js 
Module not found: Error: Cannot resolve module 'dns' in /Users/dace/Code/personal/my_project/node_modules/pg/lib 
@ ./~/pg/lib/connection-parameters.js 2:10-24 

ERROR in ./~/pgpass/lib/index.js 
Module not found: Error: Cannot resolve module 'fs' in /Users/dace/Code/personal/my_project/node_modules/pgpass/lib 
@ ./~/pgpass/lib/index.js 4:9-22 

:私はWebPACKのがsequelizeまたはpostgresの(PG)のパッケージをバンドルしようとしていることが表示されますエラーのリストの中に実行していますよ

var path = require('path'); 

module.exports = { 
    entry: path.join(__dirname, '..', 'src', 'index.js'), 
    output: { 
    publicPath: '/build/', 
    path: path.join(__dirname, '..', 'dist', 'build'), 
    filename: 'bundle.js', 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.js?$/, 
     exclude: /node_modules/, 
     loader: ['babel'], 
     query: { 
      presets: ['react', 'es2015'], 
     }, 
     }, 
    ], 
    }, 
}; 
はその後、私のindex.jsに私が持っている:私は、私は完全にプロジェクトからのWebPACKを削除すると、それが機能するようsequelizeまたはPGをバンドルしようとしてからのWebPACKを維持する必要があると推測している

var Sequelize = require('sequelize'); 

var connection = new Sequelize('dev', 'dace', 'root', { 
    dialect: 'postgres', 
}); 

var Article = connection.define('article', { 
    name: Sequelize.STRING, 
}) 

connection.sync().then(function() { 
    Article.create({ 
    name: 'Dace' 
    }); 
}); 

。私のアプリ全体でこれらのパッケージをバンドルすることを無視するようにwebpackを設定する方法はありますか?

ありがとうございます!

+1

'index.js'がロードされると、クライアント側で何が起こると思いますか? –

+0

私は最終的にReactを使ってデータを照会して表示しますが、ただちに接続してこの1つのエントリを挿入しようとしています。 – hidace

+0

'index.js'をサーバ側でも、クライアント側でのみ実行しますか? –

答えて

3

データベース、ファイルシステムなどを扱うものをクライアントコードから使用しないでください。たとえば、fsモジュール(つまりfilesystem)は、node環境でのみ定義されているもので、ブラウザには何も手がかりがありません。何がfsかもしれません。 net(ブラウザに実装されていないか、まったく実装されていない)でも同様です。驚くことではない、それについてwebpackはすべてそれについて混乱しました:)

私の提案:あなたのコードをクライアント、サーバーおよび共通部品に書き換えます。そのクライアントとサーバーの部品が、ノード/ブラウザー環境で意味をなさないものだけを実行していることを確認してください。

+0

トマスに感謝します。これはより意味をなさないようになっています。クライアント側では、最終的にユーザーは/ post/put/deleteを取得できるようになります。このため、すべて私のserver.js内で処理する必要があります。 – hidace

+1

Cool。答えを受け入れてください。また、ESTE​​はnodejs isomorphicアプリケーション用のスターターキットを探していて、サーバ、クライアント、一般的なものに気づくことができ、ネイティブコードに反応することができます。https://github.com/este/este –

関連する問題