私はvert.xを全く新しくしました。私は、vert.xで既存のnodejsアプリケーションを起動することが可能かどうかを調べようとしています。 http://vertx.io/blog/vert-x3-says-hello-to-npm-users/の指示に従って、私はvert.xをインストールするためにnpmを使いました。私は単純な世界一のアプリを走らせることができますが、既存のアプリを走らせることはちょっと難しいことです。私が見つけたすべてのVert.xのドキュメントは、新しいアプリケーションの作成について話し、既存のコードを移植しているわけではありません。vert.xでnode.jsアプリケーションを実行するにはどうすればよいですか?
ああ、既存のnodejsシステムで同じコードベースを実行し続ける必要があります。
私が見ている問題は、vert.xがnodejsネイティブモジュールを正しくロードしないことです。例えば、Vert.xはこのrequire
に窒息:
var fs = require("fs");
少し検索した後、私はvert.x相当を見つけました:
var fs = require("vertx-js/file_system");
おそらく、我々は違いをラップするために、シム/抽象化レイヤーを作成することができます。私はファイルシステムAPIのための速いものをして、それは正しくロードされるようだ。抽象レイヤー全体を書くのはかなりの労力がかかるようです。しかし、私たちのソース内で使用されているAPIの互換性の問題を解決するようです。
node_modules
ディレクトリにあるrequire
文をすべて傍受するのが実際の問題です。これらのモジュールは、ファイルシステムのような他の多くのネイティブAPIも必要としています。これは他人がすでに遭遇し解決している問題のようです。ホイールを再発明しない方がいいです。
私自身のソリューションをロールすることができました。最後の手段を除いてnode_moduleソースをsed/replaceすることは本当にありません。私が考えている唯一の他の選択肢は、NODE_PATHの先頭にディレクトリ名を挿入する抽象ディレクトリを作成することです。この解決策はうまくいくかのようですが、私が言及したように、私はvert.x noobですので、そのアプローチにどんな落とし穴があるのか見逃すことはできません。
vert.xはnodejsアプリケーションを実行するためのシムレイヤーをサポートしていますか?
Paulo、私はあなたの答えをありがとう。これは私が何を考えているかを確認します。私はドキュメントでその警告を見逃していました。私たちが直面している課題は、V8を実行できないということです。 。 。よく、長い話。したがって、vert.xに移行するにはかなりの量のリワークが必要ですが、ゼロからリライトするよりも優れています。ご協力いただきありがとうございます! –