NodeJS 托运和快递路径问题

wmtdaxz3  于 5个月前  发布在  Node.js
关注(0)|答案(2)|浏览(65)

我目前正在做一些大学的课程作业,它本质上是一个用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的**cwd**属性更改为api,然后通过调用node server.js启动artifact/server内部的服务器,它工作得很好。
问题是我需要能够从根目录启动服务器。我完全卡住了,因为我不知道我如何可以修改委托工作从根目录。
有什么想法吗?

mxg2im7a

mxg2im7a1#

我设法找到了解决我的问题的方法,并觉得我应该发布一个答案来帮助别人。
基本上,如上所示,我使用了这样的相对路径:

consign({ cwd: './artifact/server/api' })
    .include('models')
    .then('middleware')
    .then('routers')
    .into(app);

字符串
当从根目录调用时,会导致consign不工作。这可以通过使用**path来修复。
我在
server.js**文件的顶部添加了以下内容:

const path = require('path');


然后将我的consigninit修改为:

consign({ cwd: path.join(__dirname, 'api') })
    .include('models')
    .then('middleware')
    .then('routers')
    .into(app);


这就解决了我的问题!

ws51t4hk

ws51t4hk2#

我遇到了同样的问题,并得到这个错误

! Entity not found

字符串
.但随后读取Node's path documentation并尝试以下操作:

consign({
  cwd: path.dirname(__dirname)
})


如果您需要将工作目录cwd:设置为根目录'./',这似乎是一个解决方案

相关问题