首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heroku :错误: ENOENT:没有这样的文件或目录,打开'/app/build/index.html'?

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

Stack Overflow用户
提问于 2017-08-20 13:42:22
回答 3查看 4.5K关注 0票数 0

我的目录:

我试着在Heroku做我的反应项目。

但是,它打印错误信息。

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

我的node.js服务器代码

server/app.js:

代码语言:javascript
复制
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:

代码语言:javascript
复制
...
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:

代码语言:javascript
复制
...
"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"
 }
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-20 15:39:22

您可以使用CI解决方案来构建并推送到heroku,例如循环或travisci。这就是我所做的,所以我肯定会得到一个没有错误的新版本。

build文件夹推到github也可以。我肯定有人会因为一些我不知道的原因而不同意,但效果很好。

票数 1
EN

Stack Overflow用户

发布于 2017-08-20 14:11:27

弄明白了。

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

如果是这样的话,构建目录也会在github中推入,还有其他方法吗?

票数 2
EN

Stack Overflow用户

发布于 2018-01-31 20:24:05

当然,您可以生成并推动构建文件夹,但我认为这不是在本地构建的最佳方法。你可以

  1. 使用npm脚本(如'heroku-postbuild‘)在部署时处理构建步骤(plz https://devcenter.heroku.com/articles/nodejs-support),因此它将在服务器上生成构建文件。
  2. 使用CI处理测试和构建部件,但它非常复杂,通常用于大型项目
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45782779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档