Node.js (MERN) 提供静态文件和 API 的

Node.js (MERN) Serving static files and API's

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

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

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

我尝试将我的 API 用于任何请求,但同时我希望我的整个应用程序能够在网络浏览器(待办事项列表)中呈现。所以,我遵循的过程是:

  1. -启动节点实例
  2. -npm 运行 build(构建 React 项目文件)

我研究了如何在节点项目中使用 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 的路由可以正常工作。

我知道这可能是 setup/configuration 过程,但我正在尽力理解这一点。如果有人可以帮助我解决这个问题。

我工作的层次结构如下:

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

app.get('/*')

app.get('/')