【问题标题】:Node.js (MERN) Serving static files and API'sNode.js (MERN) 提供静态文件和 API
【发布时间】:2019-11-02 03:19:51
【问题描述】:

我目前正在使用 MERN 堆栈构建一个简单的应用程序来学习。到目前为止我做了什么:

  1. -用户注册和登录 (API)
  2. -TODO 列表(API 和前端与静态文件)

好的,除了一件事之外,一切正常且符合预期。

我尝试将我的 API 用于任何请求,但同时我希望我的整个应用程序能够在 Web 浏览器(TODO 列表)中进行渲染。所以,我遵循的过程是:

  1. -启动节点实例
  2. -npm run build(构建反应项目文件)

我对如何在 node 项目中使用 React 构建进行了研究,我做了以下工作:

app.use(express.static('myproject/build'));
app.get('/*', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'myproject', 'index.html'));
});

好!因此,当我转到http://localhost:4000 时,它会呈现我的索引文件,并且它实际上可以与我的登录 API 一起使用,但我有一些 API 只能用于消费数据而不是呈现 UI。

所以,我的问题是,在运行应用程序时,如果我转到:http://localhost:4000/api/users/getdata 我收到一条错误消息:错误:ENOENT:没有指向 index.html 的此类文件或目录

好的,如果我取消注释我之前发布的代码,那么我的应用当然不会呈现 UI,但我的 API 路由工作正常。

我知道这可能是设置/配置过程,但我尽我所能理解这一点。如果有人可以帮助我解决这个问题。

我工作的层次结构如下:

  • myproject(包含模型、路由(API)、中间件、index.js)

    • 前端(在文件夹“myproject”内)(构建,src(组件))

【问题讨论】:

  • 尝试更改为:app.get('/',
  • @MaxAlex 哇!有效。不敢相信单星角色产生了巨大的影响。

标签: node.js reactjs express mern


【解决方案1】:

我按照@MaxAlex 的建议做了。将代码更改为:

app.get('/*')

app.get('/')

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 2015-12-19
    • 2016-02-25
    • 2013-03-06
    • 2013-10-19
    • 2014-07-20
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    相关资源
    最近更新 更多