安装后:
create-react-app
创建的客户端文件夹。 我希望在传递时将我的应用部署到heroku。因此,我创建了以下.travis.yml
:
language: node_js
before_install:
- npm install && node index.js &
before_script: cd ./client && npm install
node_js:
- "stable"
cache:
directories:
- node_modules
script:
- npm run test
- npm run lint
- npm run build
notifications:
slack: clicker-web:myslack
deploy:
provider: heroku
api_key: "mykey"
app: test999111test
on: heroku-deployment-testing
所以我把它部署到了heroku而没有使用travis失败。 但是在heroku应用程序本身我只是得到错误(在控制台中):
npm ERR! code ELIFECYCLE
2018-04-15T15:15:31.033343+00:00 app[web.1]: npm ERR! errno 1
2018-04-15T15:15:31.034412+00:00 app[web.1]: npm ERR! Clicker@0.1.0 start: `node scripts/start.js`
2018-04-15T15:15:31.034622+00:00 app[web.1]: npm ERR! Exit status 1
2018-04-15T15:15:31.034841+00:00 app[web.1]: npm ERR!
2018-04-15T15:15:31.035019+00:00 app[web.1]: npm ERR! Failed at the Clicker@0.1.0 start script.
所以我很确定我的设置有问题。
这是我在服务器(root)目录中设置的package.json
(只是您需要的一段代码):
"engines": {
"node": "8.1.1",
"npm": "5.0.3"
},
"scripts": {
"client": "npm start --prefix client",
"buildclient": "npm build --prefix client",
"server": "nodemon index.js",
"dev":
"concurrently --kill-others-on-fail \"npm run server\" \"npm run client\"",
"build": "concurrently \"npm run server\" \"npm run client\"",
"test": "npm run server",
"start": "node index.js",
"heroku-postbuild":
"npm run install --prefix client && npm run build --prefix client"
我在我的应用程序中使用代理进行开发工作正常。但是在heroku上我不需要它。我在index.js
(在服务器根目录中)创建了这些行:
const path = require("path");
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
});
但是我总是从Heroku那里得到同样的错误。我做错了什么以及如何使用服务器+客户端将项目部署到Travis的heroku并进行最佳实践?
这是项目,您可以在其中查看文件结构。我现在在heroku-deployment-testing
分店。
此处还有herokuapp除了错误之外没有显示任何内容:
最后但并非最不重要的是travis日志(它正在部署的最后一部分):
答案 0 :(得分:1)
尝试使用此配置
language: node_js
node_js:
- '8'
cache:
directories:
- node_modules
- client/node_modules
install:
- npm install
- npm run build
script:
- nohup npm run start &
- sleep 3
- npm run test
- npm run lint
deploy:
provider: heroku
api_key:
secure: API_KEY
app: YOUR_APP_NAME
我相信您不需要before_install
和before_script
部分。
此外,您还不需要运行npm run build
脚本,因为您正在使用" heroku_postbuild" package.json中的脚本。