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

时间:2019-11-02 03:19:51

标签: node.js reactjs express mern

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

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

好吧,除了一件事之外,一切都运转良好并且符合预期。

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

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

我对如何在节点项目中使用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(组件))

1 个答案:

答案 0 :(得分:0)

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

app.get('/*')

app.get('/')