2017-12-03 18 views
1

データベースからデータを取得し、そのデータでhtmlファイルを作成します。 次に、javascriptからデータベースを接続するために、Node.jsパッケージ "pg"を使用し、htmlファイルを作成するためにjQueryを使用しました。Node.js + jQueryエラーが発生しました

しかし、 "jQueryにはドキュメントがあるウィンドウが必要です"というエラーが発生しました。

私のソースコードが

server.js

var pg = require('pg'); 
var http = require('http'); 
var $ = require('jquery'); 
var fs = require('fs'); 

var conString = "postgres://uname:@localhost:5432/shop"; 
var server = http.createServer(); 
server.on('request', doRequest); 
server.listen(3000, 'localhost'); 
function doRequest(request, response) { 
    var client = new pg.Client(conString); 
    client.connect(function(err) { 
    if(err) { 
     return console.error('could not connect to postgres', err); 
    } 
    client.query('...', function(err, result) { 
     response.writeHead(200, {'Content-Type': 'text/html'}); 
     if(err) { 
      return console.error('error running query', err); 
     } 
     do something; 
     response.end(); 
     client.end(); 
    }); 
    fs.readFile('./index.html', function(err, data){ 
     var body = data.toString(); 
     console.log($(body).find('#hoge').html()); 
    }); 
}); 
}; 

を下回っている私は、以下のようにインポート "jsdom" を試してみましたが、エラー "jsdomは関数ではありませんが、" 発生しました。

server.js(固定)

var pg = require('pg'); 
var http = require('http'); 
var jsdom = require('jsdom'); 
var fs = require('fs'); 

var conString = "postgres://uname:@localhost:5432/shop"; 
var server = http.createServer(); 
server.on('request', doRequest); 
server.listen(3000, 'localhost'); 
function doRequest(request, response) { 
    var client = new pg.Client(conString); 
    client.connect(function(err) { 
    if(err) { 
     return console.error('could not connect to postgres', err); 
    } 
    client.query('...', function(err, result) { 
     response.writeHead(200, {'Content-Type': 'text/html'}); 
     if(err) { 
      return console.error('error running query', err); 
     } 
     do something; 
     response.end(); 
     client.end(); 
    }); 
    fs.readFile('./index.html', function(err, data){ 
     var window = jsdom.jsdom(data.toString()).parentWindow; 
     var $ = require('jquery')(window); 
     var body = data.toString(); 
     console.log($(body).find('#hoge').html()); 
    }); 
}); 
}; 

I "が[email protected]" および "[email protected]" を設置。

答えて

1

jQueryはサーバーではなくブラウザで実行されるはずです。

サーバーサイドのテンプレートエンジンを使用します(例: pug

+0

私はjQueryを誤解しました。ありがとう。 – tbt

関連する問題