我目前正在从事一些大学课程,这本质上是一个用快递写的API。只要我们遵守规范,我们就可以使用其他套餐。
我正在尝试使用consign自动加载我的模型,中间件和路由。我面临的问题是我们必须遵循的文件夹结构。
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),然后列出已通过哪些测试以及哪些测试失败。
问题是我们必须通过调用node artifact/server
从根目录启动我们的服务器,这很好,因为它调用了artifact/server/server.js
。
在 artifact/server/server.js
内部,我有以下代码来初始化 consign
:
consign({ cwd: './artifact/server/api' })
.include('models')
.then('middleware')
.then('routers')
.into(app);
当我从 root 目录运行node artifact/server
时,出现以下错误:
如果我将托运的 cwd
属性更改为api
,然后通过调用artifact/server
启动node server.js
内的服务器,那么令人沮丧的是完全没问题。
问题是我需要能够从根目录启动服务器。我完全陷入困境,因为我不知道如何从根目录修改托运工作。
有什么想法吗?
答案 0 :(得分:1)
我设法找到了解决问题的方法,觉得我应该发布一个帮助他人的答案。
基本上,如上所示,我使用的是相对路径:
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);
这解决了我的问题!
答案 1 :(得分:0)
我遇到了同样的问题,并且遇到了这个错误
! Entity not found
...但是请阅读Node's path documentation并尝试以下操作:
consign({
cwd: path.dirname(__dirname)
})
如果您需要将工作目录cwd:
设为根'./'
,这似乎是一个解决方案