2017-12-14 10 views
1

私は現在、いくつかの大学の授業に取り組んでいます。我々は、仕様に従う限り、他のパッケージを使用することができます。荷送人とエクスプレスパスの問題

モデル、ミドルウェア、ルートのオートロードにconsignを使用しようとしています。私が直面している問題は、私たちが従わなければならないフォルダ構造です。 artifactの内部

coursework 
|-- artifact 
| |-- server 
| | |-- api 
| | | |-- models 
| | | | `-- stories.js 
| | | |-- middleware 
| | | | `-- stories.js 
| | | `-- routers 
| | |  `-- stories.js 
| | |-- node_modules 
| | |-- package.json 
| | |-- package-lock.json 
| | `-- server.js 
| `-- utilities 
|-- node_modules 
|-- webpages 
|-- package.json 
|-- package-lock.json 
`-- test.js 

私たちのすべてのコードがどこに行く、他に何も触れていないです。 test.jsを含むルートディレクトリが評価されます。ルートからはnpm test(QUnit)を実行し、どのテストに合格したか、失敗したかを示します。

問題は、node artifact/serverを呼び出すことによってサーバーをルートディレクトリから起動しなければならないことです。それはartifact/server/server.jsを呼び出すためです。

私は consignを初期化するために、次のコードを持っている artifact/server/server.jsの内部

consign({ cwd: './artifact/server/api' }) 
    .include('models') 
    .then('middleware') 
    .then('routers') 
    .into(app); 

私はルートディレクトリからnode artifact/serverを実行すると、私は次のエラーを取得する:

Consign error

評価は、私がcons30のcwdプロパティをapiに変更し、artifact/serverの内部でサーバーを起動すると、node server.jsと呼ばれ、完全に正常に動作します。

問題は、ルートディレクトリからサーバーを起動できる必要があることです。ルートディレクトリから作業するためにconsignをどのように変更できるのかわからないので、私は完全に立ち往生しています。

アイデア?

答えて

0

私は自分の問題に対する解決策を見つけ出し、他人を助けるための回答を投稿するべきだと感じました。ルートディレクトリから呼び出さ

consign({ cwd: './artifact/server/api' }) 
    .include('models') 
    .then('middleware') 
    .then('routers') 
    .into(app); 

動作していない委託をもたらした:これは次のように本質的に

、I上記のように、相対パスを使用していました。これは、path

を利用して固定することができ、私は私のserver.jsファイルの先頭にこれを追加しました:

const path = require('path'); 

、その後に私の委託のinitを変更:

consign({ cwd: path.join(__dirname, 'api') }) 
    .include('models') 
    .then('middleware') 
    .then('routers') 
    .into(app); 

これで問題が解決しました。