我目前正在研究一些大学类(class),它本质上是一个用 express 编写的 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);
当我运行 node artifact/server
从 root 目录我得到以下错误:
令人沮丧的是,如果我更改 consign 的 cwd
属性为 api
然后在 artifact/server
中启动服务器调用node server.js
它工作得很好。
问题是我需要能够从根目录启动服务器。我完全被卡住了,因为我不知道如何修改 consign 以从根目录工作。
有什么想法吗?
最佳答案
我设法找到了我的问题的解决方案,并且觉得我应该发布一个答案来帮助其他人。
基本上,如上所示,我使用的是这样的相对路径:
consign({ cwd: './artifact/server/api' })
.include('models')
.then('middleware')
.then('routers')
.into(app);
从根目录调用时会导致 consign 不工作。这可以通过使用 path
我在我的 server.js
文件的顶部添加了这个:
const path = require('path');
然后将我的 consign init 更改为:
consign({ cwd: path.join(__dirname, 'api') })
.include('models')
.then('middleware')
.then('routers')
.into(app);
这解决了我的问题!
关于javascript - 托运和 express 路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47816029/