我构建了一些应用程序,并决定在Heroku上托管一个应用程序。我已配置Express服务器以在Build文件夹中运行文件: server / server.js:
const path = require('path');
const express = require('express');
const app = express();
const publicPath = path.join(__dirname, '..', 'build');
const port = process.env.PORT || 3000;
app.use(express.static(publicPath));
app.get('*', (req, res) => {
res.sendFile(path.join(publicPath, 'index.html'));
});
app.listen(port, () => {
console.log('Server is up!');
});
当我尝试在本地运行服务器时,一切正常。我已经将整个项目托管在GitHub上(通过文件上传,因为我需要的端口被阻止了),并将Heroku设置为从那里获取项目。我已将Procfile设置为此:
web: node server/server.js
我希望Heroku可以运行服务器,并且服务器可以从项目的build文件夹中获取文件。但是Heroku CLI显示以下错误:
2019-11-01T20:14:22.015987+00:00 heroku[web.1]: Starting process with command `node app.js`
2019-11-01T20:14:23.648922+00:00 heroku[web.1]: Process exited with status 1
2019-11-01T20:14:23.687276+00:00 heroku[web.1]: State changed from starting to crashed
2019-11-01T20:14:23.691982+00:00 heroku[web.1]: State changed from crashed to starting
2019-11-01T20:14:23.607228+00:00 app[web.1]: internal/modules/cjs/loader.js:638
2019-11-01T20:14:23.607245+00:00 app[web.1]: throw err;
2019-11-01T20:14:23.607246+00:00 app[web.1]: ^
2019-11-01T20:14:23.607247+00:00 app[web.1]:
2019-11-01T20:14:23.607248+00:00 app[web.1]: Error: Cannot find module '/app/app.js'
2019-11-01T20:14:23.607253+00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
2019-11-01T20:14:23.607254+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:562:25)
2019-11-01T20:14:23.607255+00:00 app[web.1]: at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
2019-11-01T20:14:23.607259+00:00 app[web.1]: at startup (internal/bootstrap/node.js:283:19)
2019-11-01T20:14:23.60726+00:00 app[web.1]: at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
package.json:
"name": "ai",
"version": "0.9.0",
"private": true,
"engines": {
"npm": "^6.9.0",
"node": "^v10.15.3"
},
"dependencies": {
"bootstrap": "^4.3.1",
"emailjs-com": "^2.4.0",
"express": "^4.17.1",
"i18next": "^17.0.11",
"i18next-browser-languagedetector": "^3.0.3",
"react": "^16.9.0",
"react-bootstrap": "^1.0.0-beta.11",
"react-dom": "^16.9.0",
"react-i18next": "^10.12.2",
"react-image-gallery": "^0.9.1",
"react-scripts": "3.1.1"
},
"scripts": {
"start": "node server/server.js",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
构建顺利,但是找不到app.js。错误日志中的路径给我的意义不大-难道它不应该在build文件夹中寻找其他(最小化)文件吗?最重要的是,我的项目中没有app /文件夹。我想念什么?
答案 0 :(得分:0)
默认情况下,您的项目可能正在寻找app.js文件。如果server.js是您的主要项目文件,则可能需要查找指定app / app.js的位置并将其更改为server / server.js