0

私はいくつかの node.js コードを使用しており、バックエンド css セレクター用のファイルがjsdom必要です。jquery.min.jsローカルでは問題なく動作しましたが、 vmc pushonを使用してデプロイするとapi.cloudfoundry.com502 Bad Gateway nginxが表示されました

ここのようにpackage.jsonですべての依存関係を宣言する必要があると思いますhttp://blog.nodejitsu.com/package-dependencies-done-right

しかし、私は含める方法がわかりませんjquery.min.js。現在、それは/libフォルダーではなく/node_modulesフォルダーにあります(ノードモジュールではないため)。

Cloud Foundry に適切な依存関係とその他の追加の .js ファイルを含める方法について誰か助けてもらえますか?

更新 1:

たくさんのものを削除した後の私のコードは次のとおりです。をコメントアウトしてjsdom.envもエラーにはなりません。

var port = (process.env.VMC_APP_PORT || 3000);
var host = (process.env.VCAP_APP_HOST || 'localhost');
var http = require('http');

var request = require('request'),
    jsdom = require('jsdom');

http.createServer(function (req, res) {
  request({ uri:'http://www.google.com' }, function (error, response, body) {
    if (error && response.statusCode !== 200) {
      console.log('Error when contacting the url')
    }

    jsdom.env({
      html: body,
      scripts: [
        'lib/jquery.min.js'
      ]
    }, function (err, window) {
    });

    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write(body);
    res.end('\n');

  });

}).listen(port, host);

使ってみた感想はこちらvmc logs hp-myapp

Using manifest file manifest.yml

Getting logs for hp-myapp #0... OK

Reading logs/staging.log... OK
[2012-12-18 03:06:27] Setting up temporary directories
[2012-12-18 03:06:27] Downloading application
[2012-12-18 03:06:27] Unpacking application
[2012-12-18 03:06:27] Staging application
[2012-12-18 03:06:28] # Logfile created on 2012-12-18 03:06:28 +0000 by logger.r
b/25413
[2012-12-18 03:06:28] Skipping npm support: npm-shrinkwrap.json is not provided
[2012-12-18 03:06:28] Creating droplet
[2012-12-18 03:06:29] Uploading droplet
[2012-12-18 03:06:30] Done!

Reading logs/stderr.log... OK

/var/vcap/data/dea/apps/hp-myapp-0-5bda6049e33af03b32b79777356c8d63/app/node_mod
ules/jsdom/lib/jsdom.js:178
    features   = JSON.parse(JSON.stringify(window.document.implementation._fea
                                                          ^
TypeError: Cannot read property 'implementation' of undefined
    at exports.env.exports.jsdom.env.processHTML (/var/vcap/data/dea/apps/hp-myapp-0-5bda6049e33af03b32b79777356c8d63/app/node_modules/jsdom/lib/jsdom.js:178:59
)
    at Object.exports.env.exports.jsdom.env (/var/vcap/data/dea/apps/hp-myapp-0-
5bda6049e33af03b32b79777356c8d63/app/node_modules/jsdom/lib/jsdom.js:269:5)
    at Request._callback (/var/vcap/data/dea/apps/hp-myapp-0-5bda6049e33af03b32b
79777356c8d63/app/app.js:23:9)
    at Request.init.self.callback (/var/vcap/data/dea/apps/hp-myapp-0-5bda6049e3
3af03b32b79777356c8d63/app/node_modules/request/main.js:122:22)
    at Request.EventEmitter.emit (events.js:91:17)
    at Request.<anonymous> (/var/vcap/data/dea/apps/hp-myapp-0-5bda6049e33af03b3
2b79777356c8d63/app/node_modules/request/main.js:661:16)
    at Request.EventEmitter.emit (events.js:115:20)
    at IncomingMessage.Request.start.self.req.self.httpModule.request.buffer (/v
ar/vcap/data/dea/apps/hp-myapp-0-5bda6049e33af03b32b79777356c8d63/app/node_modul
es/request/main.js:623:14)
    at IncomingMessage.EventEmitter.emit (events.js:115:20)
    at IncomingMessage._emitEnd (http.js:366:10)

Reading logs/stdout.log... OK

localhost:3000私はうまく走ったので文脈化することはできませんhttps://github.com/tmpvar/jsdom/issues/436

4

2 に答える 2

0

チェリオで行くことにしました

それはうまくいきます。

于 2012-12-19T08:58:29.200 に答える
0

window.document は、サーバー上に存在する実際のブラウザー DOM に依存しているため、Cloud Foundry では null を返します。

于 2012-12-18T13:20:30.947 に答える