无法导出函数内的变量 expressjs/requestjs
Unable to export variables within function expressjs/requestjs
我的出口代码
//export.js
var express = require('express'),
fs = require('fs'),
request = require('request'),
cheerio = require('cheerio'),
app = express();
var episode = [],
title = [],
synopsis = [],
reviews = [],
date = [];
exports.showGrab = function(url,response){
request(url,response, function(error, response, html){
var $ = cheerio.load(html),
shows = {bitten:['http://www.tv.com/shows/bitten-2013/episodes/']};
$('.no_toggle._clearfix').eq(1).filter(function(){
var data = $(this);
episode = data.children().first().children().last().text();
exports.episode = episode;
})
})
}
console.log(episode); // => defined as [] not the value given in the function
//import.js
var express = require('express'),
fs = require('fs'),
request = require('request'),
cheerio = require('cheerio'),
app = express(),
server = require('./export');
console.log(server.episode);
server.showGrab('http://www.tv.com/shows/bitten-2013/episodes/');
在导入脚本中使用函数 server.showGrab
工作正常,但我需要在我的导入脚本中访问 show grab 函数中的变量。我相信这个问题归结为范围问题,如果我在函数外导出变量它们工作正常但我的印象是按照我所做的方式声明变量会使它们成为全局变量。我怎样才能在导入脚本中 运行 这个函数,同时仍然将它传递给 url 并返回 episode
来使用?
@Pointy 你是对的,导入脚本在定义之前调用了值
//import.js
if (server.episode === undefined){
var test = setInterval(function(){
if (server.episode != undefined){
clearInterval(test);
}
console.log(server.episode);
}, 1000);
}
这确实有效,出于某种原因,使用 else 而不是将 if 包装在 if 中是行不通的。
我的出口代码
//export.js
var express = require('express'),
fs = require('fs'),
request = require('request'),
cheerio = require('cheerio'),
app = express();
var episode = [],
title = [],
synopsis = [],
reviews = [],
date = [];
exports.showGrab = function(url,response){
request(url,response, function(error, response, html){
var $ = cheerio.load(html),
shows = {bitten:['http://www.tv.com/shows/bitten-2013/episodes/']};
$('.no_toggle._clearfix').eq(1).filter(function(){
var data = $(this);
episode = data.children().first().children().last().text();
exports.episode = episode;
})
})
}
console.log(episode); // => defined as [] not the value given in the function
//import.js
var express = require('express'),
fs = require('fs'),
request = require('request'),
cheerio = require('cheerio'),
app = express(),
server = require('./export');
console.log(server.episode);
server.showGrab('http://www.tv.com/shows/bitten-2013/episodes/');
在导入脚本中使用函数 server.showGrab
工作正常,但我需要在我的导入脚本中访问 show grab 函数中的变量。我相信这个问题归结为范围问题,如果我在函数外导出变量它们工作正常但我的印象是按照我所做的方式声明变量会使它们成为全局变量。我怎样才能在导入脚本中 运行 这个函数,同时仍然将它传递给 url 并返回 episode
来使用?
@Pointy 你是对的,导入脚本在定义之前调用了值
//import.js
if (server.episode === undefined){
var test = setInterval(function(){
if (server.episode != undefined){
clearInterval(test);
}
console.log(server.episode);
}, 1000);
}
这确实有效,出于某种原因,使用 else 而不是将 if 包装在 if 中是行不通的。