トップページtech
1002コメント339KB

【node.js】サーバサイドjavascript 3【io.js】©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net2014/12/27(土) 18:40:07.70ID:MwQYLNUR
pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。

node.js - googleが開発したV8エンジン上で実行できる処理系
http://nodejs.org/
io.js - node.js 互換で Joyent の影響からの脱却を目指す処理系
http://iojs.org/
Rhino - JVM上で実行できる処理系
https://developer.mozilla.org/ja/Rhino

io.js の経緯
http://stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
javascriptはrubyと比較してもかなり速い
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&;lang=v8&lang2=yarv
基礎から学ぶNode.js
http://gihyo.jp/dev/serial/01/nodejs
node.jsの概要とアプリケーション開発の準備
http://gihyo.jp/dev/serial/01/realtimeweb/0002

前スレ
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
【node.js】サーバサイドjavascript【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1310087535/
0524デフォルトの名無しさん2015/07/10(金) 21:26:58.34ID:GAz2R2PC
>>522
文脈的に複数の非同期I/Oを同時に発行する上限の制御だからシングルスレッドは関係ない
用語的により正しいのはsimultaneouslyだろう
用語の話だけなら「何もかも」とか「めまいがする」などと罵る必要ないだろ

>>523
非同期を扱うモジュールとしては、これまではasyncがデファクト
ES6からは標準なのでPromiseが使われていくだろうがES7ではasync/awaitになるw
0525デフォルトの名無しさん2015/07/10(金) 22:03:35.72ID:Y9pWHNlX
>>524
そこだけで何もかもと言った訳じゃないが
IOの上限て同時ファイルオープン数の上限のこといってる?
0526デフォルトの名無しさん2015/07/10(金) 22:22:27.49ID:bw+CCTDg
>>524
ES7のasync/awaitって、今のasyncと同じものだっけ?
awaitがついてるから違う?

まあ調べればわかることだし、あとで適当に調べるけど
面倒な話だな。
0527デフォルトの名無しさん2015/07/10(金) 22:32:40.45ID:GAz2R2PC
>>525
元質問よく読みな
たとえばHTTPサーバへの同時アクセスを上限5にしたいって書いてある

>>526
ES7のasync/awaitはasyncモジュールとは全くの別物w 紛らわしいな
ES7仕様の提案はこれ
https://github.com/lukehoban/ecmascript-asyncawait
C#とか.NETで既に導入されてて、非同期が同期のように書けて例外も使える
0528デフォルトの名無しさん2015/07/10(金) 22:41:09.89ID:Y9pWHNlX
>>518
> それをサーバーにPOSTするとき負荷をかけないように
> MAX5並列ぐらいに抑えたい。とかいうとき

リクエストの並行数はまず処理の並行数でファイルオープン数とイコールとは・・・まあいいわ
本人は負荷が下がると勘違いしてるようだが
せいぜいやった後でかえって重くなって無駄な労力だったことに気づけばいい
0529デフォルトの名無しさん2015/07/10(金) 22:47:48.13ID:GAz2R2PC
>>528
相手のHTTPサーバに負荷をかけすぎないように、の意味だろ
それくらい読み取れないなら黙ってろよ・・・
0530デフォルトの名無しさん2015/07/10(金) 23:02:10.55ID:bw+CCTDg
だから変なヤツは気にすんなって(言われたW)
0531デフォルトの名無しさん2015/07/10(金) 23:08:25.16ID:bw+CCTDg
>>527
> C#とか.NETで既に導入されてて、非同期が同期のように書けて例外も使える
あ、そのタイプか。yieldみたいなやつだろ?

なら単純に、async → promise → asyncawait に
移行していくって考えればいいな。

あとは、どう書き換えればいいかを頭で整理するのと
本題の並列数制限方法をpromiseでどうやるかを調べることだな。
BluebirdってES6以前なん?
0532デフォルトの名無しさん2015/07/10(金) 23:12:23.28ID:bw+CCTDg
http://smart.ataglance.jp/2015-04-02-try-async-await-with-babel/
> ECMAScript 7 で提案されている機能として async / await があります。
> 簡単に言うと Promise を使った関数を簡潔に書くことのできる新しい文法です。

ほう。なるほど。本質的にはPromiseなわけか。
これは楽だ。
0533デフォルトの名無しさん2015/07/10(金) 23:17:02.08ID:Y9pWHNlX
>>529
え?同時実行数を減らせば負荷が下がると思ってたの?
予想のはるか下すぎてなんて声をかければいいかわからないよ
実行を遅らせても計算量が減るわけないのに一体どんな原理だよ
0534デフォルトの名無しさん2015/07/10(金) 23:20:27.69ID:bw+CCTDg
同じ運動量でも、時間をかければ、少ない負荷で移動できる。
同じ計算量でも、時間をかければ、少なく負荷で処理できる。

常識じゃん?!

おじいちゃんに負荷をかけないように
ゆっくり移動しようね!
0535デフォルトの名無しさん2015/07/10(金) 23:44:16.99ID:GAz2R2PC
>>530
スマンw

>>531
> BluebirdってES6以前なん?

元々CommonJSにPromise/A+って仕様があってQやBluebirdはその実装
それらがベースになってES6のPromiseになった
だからBlurbirdもQもES6 Promiseのスーパーセットのはず
Bluebirdの各種関数(今回の場合はmap)をES6 Promiseと組み合わせても動く可能性高い
https://github.com/petkaantonov/bluebird/blob/master/API.md#mapfunction-mapper--object-options---promise

>>533
いつから負荷(workload)が計算量になったんだよwww
負荷ってのはたとえばload averageのloadのことだよ、言わせんな恥ずかしい
0536デフォルトの名無しさん2015/07/10(金) 23:55:21.38ID:Y9pWHNlX
>>535
お前それ処理の切り替えで一瞬負荷が下がったのが平均に反映されてるだけで
本体の画像処理の負荷が下がったわけじゃないぞ
馬鹿すぎて頭痛いからそのとんでも理論のソース出せよ
どうせ出せないからそれで終わりだ
0537デフォルトの名無しさん2015/07/11(土) 00:01:13.65ID:82pfuTDx
nodeがクライアント側で、サーバ側の負荷を過剰に上げないようにしたいって話だよな?
0538デフォルトの名無しさん2015/07/11(土) 00:11:47.38ID:C0q90980
ID:Y9pWHNlXだけ異次元でワロタ
0539デフォルトの名無しさん2015/07/11(土) 00:12:03.04ID:Yc/lws0v
CPU使用量の制限は専用ソフトかホストの仮想化機能でやるものなんだけど知らないのかな
0540デフォルトの名無しさん2015/07/11(土) 00:19:18.38ID:ElKMe50S
Promise/A+ってことは
Promise/AとかPromise/Bとかもあったん?

そもそもはCommonJSが言い始めたんか?
jQueryにもPromiseあったよな?

各自バラバラに作りすぎw
0541デフォルトの名無しさん2015/07/11(土) 00:27:48.18ID:ElKMe50S
え?マジでこんなのあるのかよw

http://wiki.commonjs.org/wiki/Promises

Promises/A by Kris Zyp ? "Thenables"
Promises/B by Kris Kowal ? Opaque Q API
Promises/KISS by AJ ONeal
Promises/C has been redacted
Promises/D by Kris Kowal ? "Promise-sendables", for interoperable instances of Promises/B.
0542デフォルトの名無しさん2015/07/11(土) 00:28:20.76ID:dZGExdkC
>>537
普通に読んだらそうだよな
HTTPサーバは他のサイトかもしれないし、注意しないと攻撃と見なされてBANされるかもしれない
アホな警察に逮捕されることもありえる(Librahack事件)
だから相手のサーバに負荷をかけないように、って普通にある話なんだがな

>>540
> Promise/AとかPromise/Bとかもあったん?

あったw つーかDまであってKISSってのもあった
http://wiki.commonjs.org/wiki/Promises

競争して一番いい仕様が勝ち残るのはいいことだ
0543デフォルトの名無しさん2015/07/11(土) 00:29:09.91ID:dZGExdkC
>>541
被ったw
0544デフォルトの名無しさん2015/07/11(土) 00:31:25.20ID:ElKMe50S
普通に考えたら、

Promise無印か、Promise/Aが最初で
その後にBとかCとか出来たわけで、
後のほうが改良されてると考えられるんだけど
なんで結局A+が採用されたの?
っていうか+ってなんだよw

ES6のPromiseはまたA+とは違うんだよな?
なんで変更したんだよ?

誰かそこんところ詳しい人いない?
もしくは詳しい本とかしらない
0545デフォルトの名無しさん2015/07/11(土) 00:38:20.27ID:ElKMe50S
そういやAngularJSにもPromiseってあるんだよな。
これって他のPromise(どの?)と同じなのだろうか?
0546デフォルトの名無しさん2015/07/11(土) 02:44:42.80ID:dZGExdkC
>>544
A案を改善してB案やC案ができたんじゃなく、同時期に存在した別々の実装が提案されただけ[要出典]
Promise/A https://github.com/kriszyp/node-promise
Promise/B https://github.com/kriskowal/q
Promise/KISS https://github.com/coolaj86/futures

その後Promise/BのQもPromise/Aに追随するなどPromise/Aが優勢になった[要出典]
そのPromise/Aをベースに用語整理していらんもん削ったのがPromise/A+
https://promisesaplus.com/

Promise/A+だとthenメソッドしかないからコンストラクタやユーティリティ(allやrace)を加えたのがES6 Promise
QやBluebirdなどPromise/A+の実装はだいたいES6の実装でもあり、より多機能なスーパーセット

AngularJSのPromiseはQ
実はQのメンテナがPromise/A+のとりまとめで、ES6 Promiseのとりまとめで、Googleの中の人
だからAngularJSのPromise(Q)もv8(Node)のPromise(ES6 Promiseの実装)も同じ人が中心[要出典]
0547デフォルトの名無しさん2015/07/11(土) 06:53:24.54ID:h5PRCLXB
7月に入って確変したのか
盛り上がってる
おじさんには全てはわからないけど勉強になるよ
0548デフォルトの名無しさん2015/07/11(土) 09:15:12.83ID:SAoSBNLh
ID:Y9pWHNlXみたいな盛り上げ役のピエロが湧いたからな
0549デフォルトの名無しさん2015/07/11(土) 09:36:08.00ID:7zNddN8p
npm見ると、promiseとかes6-promiseとかいろいろあるけど、
普通にPromise使いたい場合はどれ使えばいいの?
0550デフォルトの名無しさん2015/07/11(土) 10:33:10.46ID:dZGExdkC
>>549
node v0.12かio.jsなら標準でES6 Promiseが使える
0551デフォルトの名無しさん2015/07/11(土) 13:12:50.91ID:7zNddN8p
>>550
ありがとうございます
nodeやio.jsだとこの手のパッケージはいらなくなってきてるんですね
スレチですけど、IEのようなブラウザだとnpmのpromiseパッケージあたりでよさそうですね
0552デフォルトの名無しさん2015/07/11(土) 14:09:36.96ID:dZGExdkC
>>551
レガシーブラウザならBabel使った方が幸せじゃないか?
その場合はcore-jsのPromiseが使われる
https://github.com/zloirock/core-js
0553デフォルトの名無しさん2015/07/11(土) 15:00:40.10ID:ElKMe50S
あれ?ブラウザでnpmのモジュール使えるの?
余計に面倒じゃない?

ブラウザで使うパッケージシステムならbowerでしょ?
0554デフォルトの名無しさん2015/07/11(土) 15:17:14.56ID:7zNddN8p
>>552
そういう意味でもBabelって便利なんですね
しかしまずはes6を覚えねば

>>553
使えますよ。webpackとかでもrequireできますし
最近はbower使わなくなってきました
0555デフォルトの名無しさん2015/07/11(土) 16:56:32.75ID:ElKMe50S
webpackやBrowserifyって使ってる会社少ないよね?
使ってるのは個人ばっかりでqiitaのやってみました系ぐらいしか
情報も見つからない。
0556デフォルトの名無しさん2015/07/11(土) 23:36:29.68ID:dZGExdkC
ReactではBabelとwebpackの組み合わせがデファクトになってきてるからこれから事例も増えるだろう
上に出てたpixiv Sketchや米Yahooの新サービスDaily FantasyもおそらくReact + webpack
https://sketch.pixiv.net/
https://sports.yahoo.com/dailyfantasy/
どちらもサーバはnode/io.jsを使ってIsomorphic JSしてる
0557デフォルトの名無しさん2015/07/13(月) 13:34:33.33ID:oX4poPnV
Ajax使うとき皆さんは何を使っていますか?JavaScriptだとjQueryのAjaxが一般的ですがnodeのミドルウェアであるnajaxや素のAjaxなど色々ありますが・・・
0558デフォルトの名無しさん2015/07/13(月) 14:18:54.66ID:+NoacgtO
request
0559デフォルトの名無しさん2015/07/13(月) 17:51:28.66ID:UxTEJ+9t
http://blog.sarabande.jp/post/52095868617
0560デフォルトの名無しさん2015/07/13(月) 17:58:47.22ID:oX4poPnV
requestというモジュールがあるのですね!ありがとうございます。早速使いたいと思います
0561デフォルトの名無しさん2015/07/13(月) 18:00:12.70ID:UxTEJ+9t
>>559 のリンク先にそれ以外のものが比較できるようになってるからそっちも参考にして
0562デフォルトの名無しさん2015/07/13(月) 20:32:09.71ID:Rgm4BYFL
fetch
0563デフォルトの名無しさん2015/07/14(火) 13:28:49.57ID:7Tz/sGrk
のび太さんの
0564デフォルトの名無しさん2015/07/14(火) 13:46:42.96ID:vQq43Fe2
そびえ立つキノコを
0565デフォルトの名無しさん2015/07/14(火) 16:03:54.88ID:sVWjNIFt
etch
0566デフォルトの名無しさん2015/07/14(火) 16:12:54.91ID:VxoBFrok
lenny
0567デフォルトの名無しさん2015/07/16(木) 11:57:26.38ID:/b6luSAZ
>>555
あんたが知らないだけで企業でも開発チームが取り入れている
公式ドキュメントがあるのに何故遠回りして情報を探したいの?
0568デフォルトの名無しさん2015/07/16(木) 12:40:29.48ID:ytMdukkF
>>567
日本語で書いてないと読めないんでしょ
0569デフォルトの名無しさん2015/07/16(木) 13:02:31.36ID:Q/SdAAm+
つまり日本企業はないってことか。
0570デフォルトの名無しさん2015/07/16(木) 13:12:59.33ID:WO54leEH
日本はIT後進国
0571デフォルトの名無しさん2015/07/16(木) 13:19:58.88ID:vX8sQqWz
公式嫁って言ってるだけなのに、何故企業の話になるんだろう
日本語も読めない人たちだったか
0572デフォルトの名無しさん2015/07/17(金) 19:23:42.31ID:m6snKPvy
Koaのミドルウェアのコードにyield* myfuncfoo.call(this,next) みたいな表現あるけどyield*ってなんだこれ
0573デフォルトの名無しさん2015/07/17(金) 19:43:09.66ID:GbM3RqXf
>>572
http://www.ecma-international.org/ecma-262/6.0/#sec-generator-function-definitions
0574デフォルトの名無しさん2015/07/17(金) 19:49:39.73ID:3HOJEXFc
>>572
generatorの中でgeneratorを使うための構文
myfuncfooがyieldした値をyield*で渡せる
0575デフォルトの名無しさん2015/07/17(金) 22:02:28.01ID:vn+YJXYM
なるほどyieldの中でyieldするには、yield*つかうのと、thisとnextの受け渡しが必要なのね

ありがとう!
0576デフォルトの名無しさん2015/07/17(金) 22:33:34.91ID:3HOJEXFc
thisとnextはyield*とは無関係
単にmyfunctionfooをthis.myfuncfoo(next)の形で呼び出したいというだけ
yieldとyield*の違いは

function* g1() {yield [1, 2, 3];}
function* g2() {yield* [1, 2, 3];}

を比べてみるとわかりやすい
# yield*は、より正しくは「generatorの中でiterableを使う」ための構文で、generatorはiterable
0577デフォルトの名無しさん2015/07/19(日) 23:55:21.82ID:Qo0PCiiC
nodeでmysql使ってる人、どんなライブラリ使っていますか?
nodeでデータベースを抽象化したもの(mysqlとかpostgreとか変更可能なの)とか
O/Rマッパーみたいなのもので有名なものありますか?
0578デフォルトの名無しさん2015/07/20(月) 00:22:47.16ID:+nfJVLqc
http://bookshelfjs.org/
0579デフォルトの名無しさん2015/07/23(木) 10:21:56.96ID:07HCnvKF
指定したディレクトリの中のファイル名をテキストファイルに書き出すのってどうやるの?
コマンドプロンプトだとこう

dir /b/a C:\ > C:\tmp\test.txt

書き出したファイル名の後ろは改行にしたいんだけどどうやんのか分からないorz
0580デフォルトの名無しさん2015/07/23(木) 10:41:22.61ID:FhO1w/1J
それくらい自分で解決汁
がんがれ
05815792015/07/23(木) 10:44:24.64ID:07HCnvKF
ごめん、解決しました。
簡単だった・・・
0582デフォルトの名無しさん2015/07/26(日) 14:48:46.53ID:qZxuNCqf
>>577
SequlizeとかBookselfとかがあるよ
0583デフォルトの名無しさん2015/08/05(水) 11:56:12.56ID:DlON+Uf9
iojs v3.0.0
https://github.com/nodejs/io.js/blob/master/CHANGELOG.md#2015-08-04-version-300-rvagg
0584デフォルトの名無しさん2015/08/05(水) 22:43:18.92ID:wqHMf9zk
nodeでさ、プロジェクトディレクトリにnode_modulesがあっても
そっちを見ないで別の所を参照させる方法ある?
0585デフォルトの名無しさん2015/08/05(水) 22:43:51.05ID:wqHMf9zk
なければ、別のディレクトリを優先する方法でもいいけど。
0586デフォルトの名無しさん2015/08/06(木) 21:18:31.75ID:v62w5bbN
NODE_PATHでできるのでは
0587デフォルトの名無しさん2015/08/06(木) 21:32:21.06ID:sO/WbnI6
NODE_PATHは追加のみ
0588デフォルトの名無しさん2015/08/06(木) 22:39:22.85ID:RRqMGYyw
ひどいハックでよければこんな起動用スクリプトで

var firstPath = '・・・';
var loader = require.extensions['.js'];
require.extensions['.js'] = function(module, filename) {
 module.paths.unshift(firstPath);
 loader(module, filename);
}
require('./app.js'); //本来の起動スクリプト
0589デフォルトの名無しさん2015/08/06(木) 22:43:08.67ID:9VONu6kL
使わんから全然覚えてないけどmodule参照先の優先順位が環境変数にあったと思う
0590デフォルトの名無しさん2015/08/07(金) 10:53:00.83ID:ueQ0MvNL
中身がわからんままKoa使って作ってしまったけど、ようやくyieldやcoの仕組みがわかって、実はexpress+coで作ったほうが良かったのでは感ある
みんなどうしてるんだろうなー
0591デフォルトの名無しさん2015/08/07(金) 11:40:35.36ID:uZ08PPfa
koaがすたんだーどになるん?
0592デフォルトの名無しさん2015/08/07(金) 12:30:33.32ID:ajDAIYpe
v3.0でinspector動かない
https://github.com/node-inspector/node-inspector/issues/716
0593デフォルトの名無しさん2015/08/07(金) 15:33:39.21ID:ajDAIYpe
Visual Studio Codeでもデバッグできるみたいだし
これで良いか
0594デフォルトの名無しさん2015/08/07(金) 16:35:11.08ID:9BmtsJfm
>>593
あんなゴミソフト使うくらいなら、Atom使うわ
0595デフォルトの名無しさん2015/08/07(金) 18:35:18.69ID:ajDAIYpe
Visual Studio Codeは止まったり変数の内容が見えなかったりしてデバッグがろくに出来なかった
普通のVisual StudioにNTVSプラグイン入れた方がマシだった

atomはatom-node-debuggerがあるけど
SourceMap対応してないみたいじゃん
0596デフォルトの名無しさん2015/08/07(金) 21:49:56.47ID:ueQ0MvNL
WebStormを毎月インストールし直しながら使ってる
sourcemap対応でAltJSでも直接デバッグできて良い
0597デフォルトの名無しさん2015/08/20(木) 02:21:07.22ID:vRA0t8Vw
Node.jsとio.jsの最初の統合リリース「Node.js 4.0」が9月に登場予定
http://www.publickey1.jp/blog/15/nodejsiojsnodejs_409.html
0598デフォルトの名無しさん2015/08/20(木) 04:21:45.31ID:/ofAbfuE
Node.io に汁
0599デフォルトの名無しさん2015/08/21(金) 01:16:55.03ID:FY4vSw0x
更新により俺様のスケルトンが死なないことを祈る。
0600デフォルトの名無しさん2015/09/01(火) 00:37:44.20ID:6FLQcxbw
node-inspectorはいつの間にかv3.0系に対応してた
0601デフォルトの名無しさん2015/09/04(金) 15:56:01.44ID:kfMK3o00
>>595
その環境でnode.jsのバージョンを0.12にできたら最高なんだがね
0602デフォルトの名無しさん2015/09/09(水) 13:45:10.34ID:cLSarNth
4.0にバージョンアップしたら動かなくなったプロジェクトが生まれた\(^o^)/
0603デフォルトの名無しさん2015/09/09(水) 18:56:06.41ID:RxSUVlR8
お誕生日おめでとう!
0604デフォルトの名無しさん2015/09/10(木) 13:58:51.29ID:uEOT6dHU
4.0にしたらしたらパッケージを再インストールしないとダメだな
socket.ioはnode 0.12のときいれたのをそのまま使ったら動かなかったけど入れなおしたら使えた
0605デフォルトの名無しさん2015/09/17(木) 17:04:43.69ID:RsFzCYSG
早くもv4.1.0に
0606デフォルトの名無しさん2015/09/18(金) 16:30:18.86ID:cX4++fAL
4.1にしてからメモリ消費が少ない気がする
0607デフォルトの名無しさん2015/09/21(月) 15:15:12.61ID:03JYZVpu
「globalで既にそのモジュールが導入されていたらそっちを使う」
みたいな書き方ってできないのかな
devDependenciesに追加したり動作確認のためnpm iしてると容量がモリモリ増える
0608デフォルトの名無しさん2015/09/24(木) 22:37:01.93ID:rTPavUhs
場所が別の同じ名前のパッケージをガンガン読み込むので、メモリ効率悪いなとは思う
0609デフォルトの名無しさん2015/09/24(木) 23:28:32.67ID:d+OBXrtj
npm v3でpeer dependencyの挙動が標準になるって見たキガス
0610デフォルトの名無しさん2015/09/25(金) 10:15:18.69ID:8L6EHGDv
npm linkしまくる
0611デフォルトの名無しさん2015/09/26(土) 11:30:42.49ID:/RmKDqih
nodejs4.1.1に同梱のnpmでnpm -g updateを実行しても何のメッセージもでないしずっとプログラムが終了しないんですが
npm -g lsでインストールされたパッケージは表示されます
何でですか?
0612デフォルトの名無しさん2015/09/26(土) 13:11:16.89ID:gA+qxsAJ
以前のnpmで導入したパッケが多くて異様に時間掛かってるとか
うちはnpm自身を2→3に更新したら30分弱掛かったよ
0613デフォルトの名無しさん2015/09/26(土) 14:48:43.57ID:lLanKiSi
npmは3になってから大幅変更したからその影響かな
node-gypとかビルドできるようになったのだろうか
0614デフォルトの名無しさん2015/09/28(月) 00:36:12.08ID:amocDuCq
processにはdlopenと言うネイティブモジュールを直接開くメソッドがあるが
何故かドキュメントに載ってない
普通は使わないからか

https://nodejs.org/api/process.html
0615デフォルトの名無しさん2015/09/28(月) 05:53:45.72ID:yEnfUQeq
なぜかってpublicなapiじゃないからだよ決まってるだろがアホか
06166112015/09/28(月) 10:28:45.18ID:xgIbSzto
githubからインストールした3.xの使ったら解決しました
同梱のnpmだとダメだったようでした
0617デフォルトの名無しさん2015/09/28(月) 17:13:41.52ID:c4nTogwf
requestモジュールでshift-jisでポストする方法知りませんか?
request.post(url:"http....", form{name:"名前"})
ってやると名前の部分が自動でutf8でURLエンコードされてしまうんですが
shiftjisでURLエンコードするには、またURLエンコードせずにpostするにはどうしたらいいんでしょうか
requestモジュールのどっかをオーバーライドするんでしょうか
0618デフォルトの名無しさん2015/09/28(月) 17:38:41.73ID:dlMXkm1Y
試してないけどheaderで文字コード指定するとか
0619デフォルトの名無しさん2015/09/28(月) 17:39:11.05ID:dlMXkm1Y
ググったらこれ見つかったけど
http://stackoverflow.com/questions/12040643/nodejs-encoding-using-request
0620デフォルトの名無しさん2015/09/28(月) 19:20:34.86ID:Aor/5DQQ
たぶん違うだろうけど、いつの時かnpmがやたらと
メモリ使いまくっていて1GB(?)の仮想マシンだと
メモリ不足で極端に遅くなってなおかつ落ちた時があったな。
0621デフォルトの名無しさん2015/09/28(月) 21:22:28.58ID:c4nTogwf
>>619
寝てました。
encoding: null はリクエストした後のレスポンスボディのエンコードですね。
ヘッダにcontent-type: "text/html; charset=Shift-JIS" とか色々試してみてもできませんでした。
0622デフォルトの名無しさん2015/09/28(月) 21:29:13.83ID:c4nTogwf
というかcontent-type は
request.post({url: url, form: forms},function(err,res,body){
〜〜〜〜
});
こういうふうに送信時にformをつけると勝手に
content-type: "application/x-www-form-urlencoded"
で固定されますね。
formをjsonにすると content-type: "application/json"
formをformDataにすると content-type: "multipart/form-data;

になります。
0623デフォルトの名無しさん2015/09/28(月) 21:36:22.59ID:c4nTogwf
あっ
単純に
var forms = {
bbs: "tech",
key: 1419673207,
time: 1,
FROM: "",
mail: "sage",
MESSAGE: "テスト"
};
みたいなオブジェクトじゃなくて
var forms = "MESSAGE=%82%b1%82%f1%82%c9%82%bf%82%a0" みたいに文章にしたらURLエンコードされずに行けました。
0624デフォルトの名無しさん2015/09/28(月) 22:34:56.96ID:c4nTogwf
こんにちは世界
■ このスレッドは過去ログ倉庫に格納されています