カテゴリー : Node.js

[Node.js] base62-node が base62.js へリネームされていた

npm モジュール base62-node が base62.js へリネームされたようで、使い方もちょっと変わっていたのでメモ。

base62-node

base62-node では new で新しくオブジェクトを生成して、使ってました。

> var Base62 = require('base62-node');
> var base62 = new Base62('09azAZ');
> base62.encode(123);
'1Z'

base62.js

それが、base62.js だと createConverter() メソッドでコンバーターのインスタンスを受け取るという使い方に変更されていました。

> var base62js = require('base62.js');
> base62js
{ table_: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
  createConverter: [Function: createConverter] }
 
> var base62 = base62js.createConverter();
> base62.encode(123);
'1Z'

以上です。

[Node.js] 開発環境で使うデーモン化、プロセス管理ツールいくつか

Node.js の開発環境で使うデーモン化、プロセス管理ツールをいくつかご紹介します。(github の star 順)

remy/nodemon

isaacs/node-supervisor

fgnass/node-dev

nodemon 0.7.10, node-supervisor 0.5.6, node-dev 2.1.0 で確認したところ、プロセスが死んでも再度アクセスすれば再起動してくれるのは「node-supervisor」だけだったようでした。

今まで、node-dev の古いバージョン使っていたのですが、アップグレードしたらこの機能が無くなっていたので、node-supervisor へ乗り換えました。

[Jade] partial is deprecated

Jade の最新版だと partial は廃止されてます。

partial 使ってもコードはレンダリングされない

extends layout
 
block content
  h1 Invoices:
  != partial("invoice")

Jade newest version doesn’t support partials. You might be following outdated tutorials. Please read up on jade documentation here

partial 使えないので mixin 使いましょう。


参考情報

node.js – Partial Not Defined in Jade – Stack Overflow

[Mongoose] how to get virtual attribute for each nested object in an array of objects?

参考情報

node.js – Node-Express Mongoose: how to get virtual attribute for each nested object in an array of objects? – Stack Overflow

[Mongoose] 配列形式のサブドキュメント内で aggregate

Mongoose で、配列形式のサブドキュメント内で aggregate する方法をメモ。

mapreduce – Mongodb aggregate on subdocument in array – Stack Overflow

[Node.js] 逆引きメモ

Node.js で「あれしたい」というときに振り返る逆引きメモ。

JavaScriptだけに限ったことは、別にまとめてます。

[JavaScript] 逆引きメモ | CodeNote.net


ファイル File

ファイルが存在するかを調べる。

var path = require("path");
path.existsSync("/tmp/upload/some_file.txt");

エラー処理

Node and Test – badatmath/jsdojo

[Jade] each で要素だけでなく index も取得する

テンプレートエンジン Jade の each で現在のループ回数 index を取得する方法をメモ。

each item, index in list
  li= item
  if index === 1
    | : First item in list!

参考情報

node.js – Jade template engine – Each Iteration Offset – Stack Overflow

[Mongoose] 異なるOR条件を2つ以上指定したい場合の書き方

Node.js + Mongoose にて、異なるOR条件を2つ以上指定したい場合の書き方をメモ。

Test.find({
  $and: [
    { $or: [{a: 1}, {b: 1}] },
    { $or: [{c: 1}, {d: 1}] }
  ]
}, function (err, results) {
  // do something
}

$and を使って、明示的に $or を複数組み合わせて指定するだけでOKです。

参考情報

node.js – Combine two OR-queries with AND in Mongoose – Stack Overflow

[Mac] Node.js インストール中にエラー Build failed: -> task failed (err #2): {task: uv uv.h -> uv.a}

Xcode で Command Line Tools をインストールして、かつ、osx-gcc-installerをインストールしたら、Node.js がインストールできなくなりました…

% nvm install v0.6.19 
Additional options while compiling: 
######################################################################## 100.0%
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for program gcc or cc           : /usr/bin/gcc 
Checking for gcc                         : ok  
Checking for library dl                  : yes 
Checking for openssl                     : yes 
Checking for library util                : yes 
Checking for library rt                  : not found 
Checking for fdatasync(2) with c++       : no 
'configure' finished successfully (0.250s)
Waf: Entering directory `/Users/bakorer/.nvm/src/node-v0.6.19/out'
DEST_OS: darwin
DEST_CPU: x64
Parallel Jobs: 1
Product type: program
[ 1/35] copy: src/node_config.h.in -> out/Release/src/node_config.h
[ 2/35] cc: deps/http_parser/http_parser.c -> out/Release/deps/http_parser/http_parser_3.o
/usr/bin/gcc -rdynamic -pthread -m64 -arch x86_64 -g -O3 -DHAVE_OPENSSL=1 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_DARWIN_USE_64_BIT_INODE=1 -DHAVE_FDATASYNC=0 -DARCH="x64" -DPLATFORM="darwin" -D__POSIX__=1 -Wno-unused-parameter -D_FORTIFY_SOURCE=2 -IRelease/deps/http_parser -I../deps/http_parser ../deps/http_parser/http_parser.c -c -o Release/deps/http_parser/http_parser_3.o
[ 3/35] src/node_natives.h: src/node.js lib/dgram.js lib/console.js lib/buffer.js lib/querystring.js lib/punycode.js lib/http.js lib/net.js lib/stream.js lib/events.js lib/util.js lib/module.js lib/_debugger.js lib/assert.js lib/fs.js lib/child_process.js lib/os.js lib/readline.js lib/vm.js lib/url.js lib/tls.js lib/crypto.js lib/sys.js lib/https.js lib/freelist.js lib/dns.js lib/_linklist.js lib/buffer_ieee754.js lib/tty.js lib/cluster.js lib/repl.js lib/path.js lib/string_decoder.js lib/timers.js lib/zlib.js lib/constants.js -> out/Release/src/node_natives.h
[ 4/35] uv: deps/uv/include/uv.h -> out/Release/deps/uv/uv.a
rm -f src/ares/*.o
rm -f src/unix/ev/*.o
rm -f src/unix/eio/*.o
rm -f src/unix/*.o
rm -rf test/run-tests.dSYM run-benchmarks.dSYM
rm -f -f src/*.o *.a test/run-tests test/run-benchmarks
 
...
 
make[1]: *** [src/unix/darwin.o] Error 1
Waf: Leaving directory `/Users/bakorer/.nvm/src/node-v0.6.19/out'
Build failed:  -> task failed (err #2): 
	{task: uv uv.h -> uv.a}
make: *** [program] Error 1
nvm: install v0.6.19 failed!

そもそも、Xcode の Command Line Tools 使うんだったら、osx-gcc-installer はインストールしてはいけなかったみたいです。

下記のコマンドで、一旦アンインストールして、もう一度 Command Line Tools をインストールすると、Node.js を正常にインストールすることができました。

% sudo /Library/Developer/Shared/uninstall-devtools --mode=all

GNU GCC 4.2 が必要ならこれだけ、Homebrew でインストールした方が良さそうですね。

brew install apple-gcc42

以上です。

[参考]

xcode を入れて、消して、node がビルドできた話 – すぱぶろ

[Node.js] コマンドライン引数をカンタンに扱えるモジュール「commander.js」

Node.js で、コマンドライン引数をカンタンに扱えるモジュール「commander.js」がとても便利です!

visionmedia/commander.js · GitHub