現在、私はjs chrome拡張機能を構築しており、そうするために、いくつかのサイトからデータをスクラップする必要があります。Request.jsがBrowserifyで正しく動作しない
したがって、this SO questionに基づいて、requestをBrowserifyと使用して達成できることがわかりました。
私はnpm
を使用して両方をインストールし、(ターミナルコマンドを実行している権限の理由からが動作していないので、)私のbundle.js
ファイルを作成するbrowserify.js
スニペットを作成したので、私は、クライアントで私のブラウザをNode js
require
年代を実行することができます。
[OK]を、ので、私は最終的にbundle.js
ファイルを作成するために管理し、自分のローカルサーバでそれを実行しようとしたが、それは私にCORSエラーを与え続け、所望の応答を返さない:
は、APIを取得ロードできませんhttps://somesite/index.html。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://localhost:8080'はアクセスできません。不透明な応答が必要な場合は、要求のモードを「no-cors」に設定して、CORSを無効にしてリソースをフェッチします。意図したとおりに
$ node myFileWithRequires.js
それは、廃棄データを返さ作品:
一つ奇妙なことは、私はnode
を使用して、端末から直接「アンバンドル」ファイルを実行した場合ということです。
私は間違っていますか? request
とbrowserify
を使用してクライアントのデータをスクラップするにはどうすればよいですか?
CODE:デフォルトでは
myBrowserifySnippet.js
var browserify = require('browserify');
var b = browserify();
b.add('myrequest.js');
const fs = require('fs');
const writable = fs.createWriteStream('bundle.js');
b.bundle().pipe(writable);
myFileWithRequires.js
var request = require('request');
request('http://www.google.com', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
をあなたはクライアント上で '要求'を使いたくありません。 '要求 'が大きすぎます(> 1MB)。代わりに 'xhr'パッケージは' XMLHttpRequest'を使ってリクエストAPIのサブセットを実装します。browserifyで使用するように設計されています。 –
あなたの問題はおそらく 'somesite'のCORS設定に関連するものであり、リクエストではありません。 'somesite 'は他のサイトからのリクエストを許可せず、ブラウザはそれを尊重します。 –
@MehdiElFadilので、この 'request'ソリューションなしでデータをスクラップする方法はありますか?あなたは何か考えていますか? – Lioo