javascript - Heroku : Error: ENOENT: no such file or directory, 打开 '/app/build/index.html' ?

标签 javascript reactjs heroku

我的目录:

enter image description here

我尝试将 depoly 部署到 Heroku 中的 React 项目中。

但是,它打印错误消息。

这是'错误:ENOENT:没有这样的文件或目录,打开'/app/build/index.html'

我的node.js服务器代码

服务器/app.js:

import express from  'express';
import morgan from 'morgan';
import path from 'path';
import loader from './loader';

const app = express();

// server static file
app.use(express.static(path.resolve(__dirname, '../build')));

app.use('/', loader);

// exporting module
export default app;

服务器/loader.js:

...
export default (req, res) => {
const filePath = path.resolve(__dirname, '../build', 'index.html');

fs.readFile(filePath, 'utf8', (err, htmlData)=>{
  if (err) {
    console.error('read error', err)
    return res.status(404).end()
  }
  const context = {}
  const markup = renderToString(
  <StaticRouter location={req.url} context={context}>
    <App/>
  </StaticRouter>
  )

  if (context.url) {
    redirect(301, context.url)
  } else {
    const Rendered = htmlData.replace('{{SSR}}', markup)
    res.send(Rendered)
  }
})

我认为我没有问题,但是当我尝试连接时,我得到一个“未找到”页面。

如何解决这个问题?

+编辑:

我的package.json:

...
"engines": {
  "node": "6.11.1"
},
"dependencies": {
  "axios": "^0.16.2",
"express": "^4.15.4",
"morgan": "^1.8.2",
"react": "^15.6.1",
"react-dom": "^15.6.1",
"react-ga": "^2.2.0",
"react-router": "^4.1.2",
"react-router-dom": "^4.1.2",
"react-scripts": "1.0.10",
"semantic-ui-css": "^2.2.12",
"semantic-ui-react": "^0.71.4"
},
"scripts": {
"start": "NODE_ENV=development ./node_modules/.bin/babel-node server",
"start:server": "NODE_ENV=development babel-node server",
"build": "react-scripts build",
"test": "mocha test",
"eject": "react-scripts eject"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-plugin-transform-require-ignore": "^0.1.1",
"babel-preset-env": "^1.6.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-react-app": "^3.0.2",
"babel-preset-stage-0": "^6.24.1",
"chai": "^4.1.1",
"mocha": "^3.5.0",
"mz": "^2.6.0",
"supertest": "^3.0.0",
"supertest-as-promised": "^4.0.2"
 }
 }

最佳答案

想通了。
它在我的 .gitignore 文件中有“build”。

如果是的话,build目录也会推送到github,还有其他办法吗?

关于javascript - Heroku : Error: ENOENT: no such file or directory, 打开 '/app/build/index.html' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782779/

相关文章:

javascript - 对带有日期的数组进行排序时出现问题

reactjs - 在React js中出现错误: Could not find a declaration file for module 'react-bootstrap-modal' .

javascript - 在 React 子组件上调用方法

arrays - 如何优化 heroku 上的相交

grails - Heroku上的Grails 2.3.4-BeanCreationException

javascript - Three.js r70 将平面合并在一起只渲染第一架飞机?

javascript - 隐藏屏幕外的元素部分并在单击时推送和显示

magento - 客户登录 magento 后禁用重定向

javascript - ReChart 不渲染多个 Bars

python - 什么是 'redirect URL' 来分发 Slack 机器人?