问题与委托和expressionpath

我目前正在从事一些大学课程,这本质上是一个用快递写的API。 只要遵循规范,我们就可以使用其他软件包。

我试图使用委托自动加载我的模型,中间件和路线。 我面临的问题是我们必须遵循的文件夹结构。

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 

artifact内部是我们所有的代码都去的地方,没有其他东西被触动。 包含test.js的根目录是我们将被评估的地方。 从根目录运行npm test (QUnit),然后列出哪些testing已通过,哪些已失败。

问题是我们必须通过调用node artifact/server server从根目录启动我们的服务器,因为它调用了artifact/server/server.js

artifact/server/server.js我有以下代码来初始化consign

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

当我从目录运行node artifact/server ,出现以下错误:

委托错误

令人沮丧的是,如果我将consign的cwd属性更改为api ,然后通过调用node server.js启动artifact/server内部的artifact/server ,那么它工作得很好。

问题是我需要能够从根目录启动服务器。 我完全卡住,因为我不知道如何修改委托从根目录工作。

有任何想法吗?

我设法find了解决问题的办法,并觉得应该发表一个答案来帮助别人。

基本上,如上所示,我使用了如下的相对path:

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

当从根目录调用导致委托不工作。 这可以通过利用path

我在我的server.js文件的顶部添加了这个:

 const path = require('path'); 

然后把我的委托 init改为:

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

这然后解决了我的问题!