Node.js(MERN)服务静态文件和API

问题描述 投票:0回答:1

我目前正在使用MERN堆栈构建一个简单的应用程序以进行学习。我到目前为止所做的:

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

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

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

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

我研究了如何在节点项目中使用React build,并且做了以下工作:

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

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

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

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

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

正在工作的层次结构如下:

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

    • 前端(在文件夹“ myproject”内部)(内部版本,src(组件))
node.js reactjs express mern
1个回答
0
投票

我做了@MaxAlex的建议。更改了以下代码:

app.get('/*')

to

app.get('/')
© www.soinside.com 2019 - 2024. All rights reserved.