我的目录:
我在Heroku中尝试depoly到我的反应项目。
但是,它会打印错误消息。
错误:ENOENT:没有这样的文件或目录,打开' /app/build/index.html'
我的node.js服务器代码
server / 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;
server / 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"
}
}
答案 0 :(得分:2)
想通了。
它在我的.gitignore文件中“构建”。
如果是这样,构建目录也会推入github,还有其他方法吗?
答案 1 :(得分:1)
您可以使用CI解决方案来构建和推送到诸如circleci或travisci之类的heroku。这就是我所做的,所以我肯定会得到一个没有错误的新版本。
将build
文件夹推送到github也很好。我肯定有人会因为某些原因不同意我不知道但是它的工作正常。
答案 2 :(得分:-1)
确定您可以生成并推送构建文件夹,但我认为这不是本地构建的最佳方式。 你可以