[英]Added StackNavigator to my app project, but I can't make it work with a Class I had
[英]To make my code work I had to alter some core functionality of cheerio, how can I persist it in my module?
我正在創建一個用於學習目的的“網絡爬蟲”,我不得不更改一些cheerioJS核心功能以使我的代碼工作,這是發生的事情:
索引.js:
var request = require('request');
var cheerio = require('cheerio');
module.exports.findWordInURL = function(url, word) {
request(url, function(error, response, body) {
if (!error && response.statusCode == 200) {
$ = cheerio.load(body);
texto = [];
retorno = [];
b = $('body').text().toLowerCase();
c = b.replace(/\s+/g, ' ');
texto = c.split("¬");
for (var i = texto.length - 1; i >= 0; i--) {
if (texto[i].search(word) !== -1) {
retorno.push("+" + texto[i] + "+");
}
}
console.log(retorno);
} else {
console.log(error);
}
});
};
它之所以有效,是因為我更改了“$().text()”函數以滿足我的需要:
來自cheerio lib的static.js,看看里面的變化>>> <<<:
/**
* $.text(dom)
*/
exports.text = function(elems) {
if (!elems) return '';
var ret = '',
len = elems.length,
elem;
for (var i = 0; i < len; i++) {
elem = elems[i];
if (elem.type === 'text') ret += elem.data >>>+ "¬"<<<;
else if (elem.children && elem.type !== 'comment') {
ret += exports.text(elem.children);
}
}
return ret;
};
然后,當我在另一個 .js 文件中調用它時,它按預期工作:
teste.js:
var webCrawler = require('./index');
webCrawler.findWordInURL("http://www.estadao.com.br/","temer");
我怎樣才能讓我的模塊使用這個修改過的 Cheerio 進入 NPM,或者至少如果有人在 git 上克隆它,當他通過 npm install 安裝它時收到這個修改過的 Cheerio?
您可以通過將修改后的cheerio.text 函數(不確定它是否是cheerio.text,請檢查)放在您自己的index.js 中來完全避免修改原始cheerio:
索引.js
var request = require('request'); var cheerio = require('cheerio'); cheerio.text = function(elems) { if (!elems) return ''; var ret = '', len = elems.length, elem; for (var i = 0; i < len; i++) { elem = elems[i]; if (elem.type === 'text') ret += elem.data >>>+ "¬"<<<; else if (elem.children && elem.type !== 'comment') { ret += exports.text(elem.children); } } return ret; };
這樣至少我們都npm install
相同的 Cheerio 並在我們使用您的應用程序時獲得您修改的功能
如果您似乎無法執行方法 1,您始終可以將您正在使用的模塊分叉到您的 Github,在這種情況下為https://github.com/cheeriojs/cheerio
然后你可以隨意修改,把它推送到你的 Github,然后在你自己的package.json
:
"cheerio": "github.com/<YOURNAME>/cheerio";
當然,如果您認為您的編輯有助於改進整個模塊,那么您可以在原始模塊上提出問題/PR。
正如用戶@vtange 所說:
哦。 好吧,然后你可以 fork github.com/cheeriojs/cheerio,按照你的意願編輯它,將它推送到你自己的 github acct 然后通過“cheerio”將它鏈接到 package.json 中:“github.com/(YOURNAME)/cheerio” .
有效! NPM 安裝,從我的 git 安裝分叉版本!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.