2016-06-15 11 views
0

私はノードがかなり新しく、おそらくこれはかなり単純な問題です。複数のモジュールをパッケージからエクスポートするにはどうすればいいですか?

私はパッケージmypackageを持っているとしましょう。私は、そのフォルダ上でノードを実行し、行うことができ、mypackage一度tools.js

がインストールされていると呼ばれる別のモジュールがあるdistフォルダで

... 
"main": "./dist/index.js", 
... 

:私のパッケージのpackage.jsonで、私はmainキーが定義されています以下:

> require('mypackage') 

これは完全に機能します。私はtoolsモジュールをインポートしようとすると、しかし、私はこれに実行します。私はdistフォルダを指定した場合

> require('mypackage/tools') 

Error: Cannot find module 'mypackage/tools' 
    at Function.Module._resolveFilename (module.js:438:15) 
    at Function.Module._load (module.js:386:25) 
    at Module.require (module.js:466:17) 
    at require (internal/module.js:20:19) 
    at repl:1:1 
    at REPLServer.defaultEval (repl.js:272:27) 
    at bound (domain.js:280:14) 
    at REPLServer.runBound [as eval] (domain.js:293:12) 
    at REPLServer.<anonymous> (repl.js:441:10) 
    at emitOne (events.js:101:20) 

しかし、それは動作します:

> require('mypackage/dist/tools') 

をしかし、これは私が望むものではありません、私のユーザーが行うこと。 srcdistの両方があり、非メインモジュールにmypackage/otherModでアクセスできるようにするには、どのようなプロジェクト構造に従うべきですか?ありがとう。

答えて

0

あなたはまだ親ディレクトリにいるためです。 あなたが使用して、これを含めることができます。あなたは

process.chdir(__dirname); 

更新を行うことができます "DIST/index.js" 内部

。内部のindex.jsは:

+0

私のパッケージをインポートすると自動的にノードプロセスのpwdが変更されるということです。これは悪い考えです。 2つ目は動作しますが、 'tools'が' index'の中でオブジェクトとして利用できるようになります。 'tools'が別のモジュールとして公開されることを望みます。 – bgusach

関連する問題