托运和快递路径问题

时间:2017-12-14 14:43:28

标签: javascript node.js 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);

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

Consign error

如果我将托运的 cwd 属性更改为api,然后通过调用artifact/server启动node server.js内的服务器,那么令人沮丧的是完全没问题。

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

有什么想法吗?

2 个答案:

答案 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:设为根'./',这似乎是一个解决方案