gpt4 book ai didi

node.js - Express 在 AppFog 上出错,但在本地则不然

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:38 25 4
gpt4 key购买 nike

当我在 AppFog 上托管我的应用程序时,出现错误。第50行,当我调用JSDOM时...问题没有出现在本地,我不明白为什么它在远程不起作用...

我的代码(在本地工作):

exports.index = function(req, res) {
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success( function(creations) {
Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
async.map(posts, function(postEntity, callback){
jsdom.env( // PROBLEM HERE
postEntity.content,
["http://code.jquery.com/jquery.js"],
function(errors, window) {
if(errors) return callback(errors);
postEntity.content = window.$("p").text();
callback(null, postEntity);
}
);
}, function(err, transformedPosts){
if(err) return callback(err);
res.render('index', {
creations: creations,
posts: transformedPosts,
title: "Anthony Cluse | Portfolio"
});
});
});
});
};

我的错误(在 AppFog 上 - 我向支持人员发送了请求):

TypeError: Cannot read property 'implementation' of undefined
at exports.env.exports.jsdom.env.processHTML (/mnt/var/vcap.local/dea/apps/anthonycluse-1- 0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/jsdom/lib/jsdom.js:178:59)
at Object.exports.env.exports.jsdom.env (/mnt/var/vcap.local/dea/apps/anthonycluse-1- 0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/jsdom/lib/jsdom.js:269:5)
at exports.index.Creation.findAll.success.Post.findAll.success.async.map.res.render.creations (/mnt/var/vcap.local/dea/apps/anthonycluse-1- 0c3b7373ee2a0a1334d2ea77a9bf22c8/app/routes/index.js:50:23)
at _asyncMap (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:222:13)
at async.each (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:99:13)
at Array.forEach (native)
at _each (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:32:24)
at async.each (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:98:9)
at _asyncMap (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:221:9)
at Object.doParallel [as map] (/mnt/var/vcap.local/dea/apps/anthonycluse-1- 0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:199:23)

登录 AppFog:

====> /logs/staging.log <====

# Logfile created on 2013-02-22 23:41:12 +0000 by logger.rb/25413
Skipping npm support: npm-shrinkwrap.json is not provided

====> /logs/stdout.log <====

Express server listening on port 56643
Executing: CREATE TABLE IF NOT EXISTS `Posts` (`slug` VARCHAR(255), `title` VARCHAR(255), `thumbnail` VARCHAR(255), `content` TEXT, `state` INTEGER, `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing: CREATE TABLE IF NOT EXISTS `Creations` (`slug` VARCHAR(255), `screenshot` VARCHAR(255), `title` VARCHAR(255), `subtitle` VARCHAR(255), `url` VARCHAR(255), `content` TEXT, `webdesigner` VARCHAR(255), `developper` VARCHAR(255), `integrator` VARCHAR(255), `designer` VARCHAR(255), `state` INTEGER, `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing: CREATE TABLE IF NOT EXISTS `Posts` (`slug` VARCHAR(255), `title` VARCHAR(255), `thumbnail` VARCHAR(255), `content` TEXT, `state` INTEGER, `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing: CREATE TABLE IF NOT EXISTS `Creations` (`slug` VARCHAR(255), `screenshot` VARCHAR(255), `title` VARCHAR(255), `subtitle` VARCHAR(255), `url` VARCHAR(255), `content` TEXT, `webdesigner` VARCHAR(255), `developper` VARCHAR(255), `integrator` VARCHAR(255), `designer` VARCHAR(255), `state` INTEGER, `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing: SELECT * FROM `Creations` WHERE state = 1 ORDER BY id DESC LIMIT 2;
Executing: SELECT * FROM `Posts` WHERE state = 1 ORDER BY id DESC LIMIT 2;
{ __options:
{ timestamps: true,
instanceMethods: {},
classMethods: {},
validate: {},
freezeTableName: false,
underscored: false,
syncOnAssociation: true,
paranoid: false,
omitNull: false,
hasPrimaryKeys: false },
hasPrimaryKeys: false,
selectedValues:
{ slug: 'my-first-post',
title: 'my first post',
thumbnail: 'http://i.pcworld.fr/1151321-espace-sfr.jpg',
content: '<p>\r\nun content pour le premier post\r\n</p>\r\n<img src="http://i.pcworld.fr/1151321-espace-sfr.jpg">\r\n<p>et la suite !!!</p>',
state: 1,
id: 1,
createdAt: Thu Feb 21 2013 21:45:58 GMT+0000 (UTC),
updatedAt: Thu Feb 21 2013 21:46:00 GMT+0000 (UTC) },
slug: 'my-first-post',
title: 'my first post',
thumbnail: 'http://i.pcworld.fr/1151321-espace-sfr.jpg',
content: '<p>\r\nun content pour le premier post\r\n</p>\r\n<img src="http://i.pcworld.fr/1151321-espace-sfr.jpg">\r\n<p>et la suite !!!</p>',
state: 1,
id: 1,
createdAt: Thu Feb 21 2013 21:45:58 GMT+0000 (UTC),
updatedAt: Thu Feb 21 2013 21:46:00 GMT+0000 (UTC),
isNewRecord: false }

====> /logs/staging.log <====

# Logfile created on 2013-02-22 23:41:12 +0000 by logger.rb/25413
Skipping npm support: npm-shrinkwrap.json is not provided

====> /logs/stdout.log <====

Express server listening on port 48140
Executing: CREATE TABLE IF NOT EXISTS `Posts` (`slug` VARCHAR(255), `title` VARCHAR(255), `thumbnail` VARCHAR(255), `content` TEXT, `state` INTEGER, `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing: CREATE TABLE IF NOT EXISTS `Creations` (`slug` VARCHAR(255), `screenshot` VARCHAR(255), `title` VARCHAR(255), `subtitle` VARCHAR(255), `url` VARCHAR(255), `content` TEXT, `webdesigner` VARCHAR(255), `developper` VARCHAR(255), `integrator` VARCHAR(255), `designer` VARCHAR(255), `state` INTEGER, `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing: CREATE TABLE IF NOT EXISTS `Posts` (`slug` VARCHAR(255), `title` VARCHAR(255), `thumbnail` VARCHAR(255), `content` TEXT, `state` INTEGER, `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing: CREATE TABLE IF NOT EXISTS `Creations` (`slug` VARCHAR(255), `screenshot` VARCHAR(255), `title` VARCHAR(255), `subtitle` VARCHAR(255), `url` VARCHAR(255), `content` TEXT, `webdesigner` VARCHAR(255), `developper` VARCHAR(255), `integrator` VARCHAR(255), `designer` VARCHAR(255), `state` INTEGER, `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;

使用 Cheerio 编辑:

var cheerio = require('cheerio'), $;

exports.index = function(req, res) {
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success( function(creations) {
Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
async.map(posts, function(postEntity, callback){
$ = cheerio.load(postEntity.content);
postEntity.content = $("p").text();
/*
jsdom.env(
postEntity.content,
["http://code.jquery.com/jquery.js"],
function(errors, window) {
//deal with errors
if(errors) return callback(errors);
postEntity.content = window.$("p").text();
callback(null, postEntity);
}
);
*/
}, function(err, transformedPosts){
if(err) return callback(err);
res.render('index', {
creations: creations,
posts: transformedPosts,
title: "Anthony Cluse | Portfolio"
});
});
});
});
};

最佳答案

看来 jsdom 依赖于一个无法在 CloudFoundry 上运行的 native 库,AppFog 使用的也是如此。

请参阅此 jsdom 问题 https://github.com/tmpvar/jsdom/issues/436

解决方法是使用 Cheerio ( https://github.com/MatthewMueller/cheerio ) 之类的东西

这是主页上的示例:

var cheerio = require('cheerio');
var $ = cheerio.load('<h2 class = "title">Hello world</h2>');

$('h2.title').text('Hello there!');
$('h2').addClass('welcome');

关于node.js - Express 在 AppFog 上出错,但在本地则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15034317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com