【发布时间】:2019-11-02 03:19:51
【问题描述】:
我目前正在使用 MERN 堆栈构建一个简单的应用程序来学习。到目前为止我做了什么:
- -用户注册和登录 (API)
- -TODO 列表(API 和前端与静态文件)
好的,除了一件事之外,一切正常且符合预期。
我尝试将我的 API 用于任何请求,但同时我希望我的整个应用程序能够在 Web 浏览器(TODO 列表)中进行渲染。所以,我遵循的过程是:
- -启动节点实例
- -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