Node.js (MERN) 提供静态文件和 API 的
Node.js (MERN) Serving static files and API's
我目前正在使用 MERN 堆栈构建一个简单的应用程序来学习。到目前为止我做了什么:
- -用户注册和登录(API)
- -TODO 列表(API 和带有静态文件的前端)
好的,除一件事外,一切正常,符合预期。
我尝试将我的 API 用于任何请求,但同时我希望我的整个应用程序能够在网络浏览器(待办事项列表)中呈现。所以,我遵循的过程是:
- -启动节点实例
- -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 过程,但我正在尽力理解这一点。如果有人可以帮助我解决这个问题。
我工作的层次结构如下:
myproject(包含模型、路由(API's)、中间件、index.js)
- 前端(在文件夹 'myproject' 内)(构建、src(组件))
我按照@MaxAlex 的建议做了。更改了代码:
app.get('/*')
至
app.get('/')
我目前正在使用 MERN 堆栈构建一个简单的应用程序来学习。到目前为止我做了什么:
- -用户注册和登录(API)
- -TODO 列表(API 和带有静态文件的前端)
好的,除一件事外,一切正常,符合预期。
我尝试将我的 API 用于任何请求,但同时我希望我的整个应用程序能够在网络浏览器(待办事项列表)中呈现。所以,我遵循的过程是:
- -启动节点实例
- -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 过程,但我正在尽力理解这一点。如果有人可以帮助我解决这个问题。
我工作的层次结构如下:
myproject(包含模型、路由(API's)、中间件、index.js)
- 前端(在文件夹 'myproject' 内)(构建、src(组件))
我按照@MaxAlex 的建议做了。更改了代码:
app.get('/*')
至
app.get('/')