Mat*_*ent 5 javascript node.js express
我目前正在研究一些大学课程,它本质上是一个用 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
Run Code Online (Sandbox Code Playgroud)
里面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);
Run Code Online (Sandbox Code Playgroud)
当我node artifact/server
从根目录运行时,出现以下错误:
令人沮丧的是,如果我将 consign 的cwd
属性更改为api
,然后artifact/server
通过调用node server.js
它在内部启动服务器,它工作得很好。
问题是我需要能够从根目录启动服务器。我完全卡住了,因为我不知道如何修改 consign 以从根目录工作。
有任何想法吗?
我设法找到了问题的解决方案,并觉得我应该发布答案来帮助其他人。
本质上,如上所示,我使用的是相对路径,如下所示:
consign({ cwd: './artifact/server/api' })
.include('models')
.then('middleware')
.then('routers')
.into(app);
Run Code Online (Sandbox Code Playgroud)
当从根目录调用时,会导致委托无法工作。这可以通过使用来解决path
我将其添加到文件顶部server.js
:
const path = require('path');
Run Code Online (Sandbox Code Playgroud)
然后将我的委托初始化更改为:
consign({ cwd: path.join(__dirname, 'api') })
.include('models')
.then('middleware')
.then('routers')
.into(app);
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题!
归档时间: |
|
查看次数: |
1291 次 |
最近记录: |