问题与委托和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);
这然后解决了我的问题!