3

node.js で proto ファイルを試してロードするために使用した手順は次のとおりです。全体として、プロトコル バッファを node.js で動作させるにはどうすればよいですか?

1) プロトコル バッファをこの場所にダウンロードしてインストールします。

/home/ubuntu/Downloads/protobuf-2.4.1

2) この repo からこの protobuf-for-node 修正をダウンロードしました。このフォルダーを、node.js アプリ フォルダーの node_modules フォルダーに配置します。

git://github.com/pzgz/protobuf-for-node.git

3)次のコマンドを実行しました

cd node_modules/protobuf-for-node
PROTOBUF=~/Downloads/protobuf-2.4.1 /usr/local/bin/node-waf configure clean build

4) 次のファイルをこれらの場所に移動しました。

cp node_modules/protobuf-for-node/protobuf_for_node.h /usr/local/include/node
cp node_modules/protobuf-for-node/build/Release/protobuf_for_node_lib.so /usr/local/lib

5) 以下を実行して、node.js に同梱されている feeds.proto サンプルをビルドしました。

cd node_modules/protobuf-for-node/example
protoc --descriptor_set_out=feeds.desc --include_imports feeds.proto

6) アプリで、この行を追加しました。

var express = require('express'), routes = require('./routes');
var fs = require('fs');
var puts = require('util').puts;
url = require('url');
moment = require('moment');
var uuid = require('node-uuid');
var app = module.exports = express.createServer();
var Schema = require('protobuf_for_node').Schema;
var schema = new Schema(fs.readFileSync('/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/protobuf-for-node/example/feeds.desc'));

7) これが私のエラーです。

module.js:337
    throw new Error("Cannot find module '" + request + "'");
          ^
Error: Cannot find module 'protobuf_for_node'
    at Function._resolveFilename (module.js:337:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:359:17)
    at require (module.js:375:17)
    at Object.<anonymous> (/home/ubuntu/app.js:9:14)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)
    at Array.0 (module.js:484:10)
4

2 に答える 2

2

代わりに、ライブラリのこのフォークを使用することを検討してください。

https://github.com/chrisdew/protobuf/

それはより積極的に維持されているようで、より良いドキュメントがあります。それをインストールするのはnpmでしたが、それを行うのは簡単でrequire('protobuf')、私にとってはうまくいきました。

Ubuntuの場合、npmでパッケージをインストールし、protoファイルをコンパイルするには、次のものをインストールする必要がありました。

sudo apt-get install libprotobuf-dev protobuf-compiler

すでに持っているようですが、手作業でインストールしました。

于 2012-05-29T15:36:56.003 に答える