javascript - 托运和 express 路径问题

标签 javascript node.js express

我目前正在研究一些大学类(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/serverroot 目录我得到以下错误:

Consign error

令人沮丧的是,如果我更改 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/

相关文章:

javascript - 通过 AJAX 渲染 Jade 模板并尝试独立于 HTML 传递/访问数据

javascript - 如何使用 ExpressJS 渲染带有参数的 HTML View (在 home/root View 上)?

javascript - 如何用Jquery调整进度条?

javascript - Div 不会居中

javascript - airbnb/react-dates - 无法在日期字段中编辑/输入

json - Node.js 从服务器渲染大量 JSON 数据

javascript - 如果没有构造函数,则绑定(bind) this 在类中是可选的?

javascript - 如何替换javascript中某些字符之间的文本

node.js - 如何为使用 express 构建的 NodeJS 应用程序启用 brotli 压缩?

javascript - 如何使用 Nodejs 永久删除最新版本的 S3 对象