修改。 heroku只是获取或使用我的服务器文件,仍然试图弄清楚如何让它使用客户端。'
我正在尝试获取我在heroku上构建的第一个应用程序。我没有完成它,但它的基础工作正常,当我运行npm run dev.
并使用我的localhost中的生产时,它的版本到目前为止工作正常。
当我尝试将它推送到heroku时,我在页面上得到无法获取/ ,当我检查我在快递中识别的其他路径时,我得到原始json数据回来了。问题是看起来我的客户可能会被忽略,所以我确定我在我的package.json中搞砸了。
我使用create-react-app启动了这个,客户端和服务器都有自己的包。
在server.js中文件路径(为了可见性而编辑了一些代码。注释掉加入文件路径什么也没做,所以这可能不是问题):
const path = require('path');
// const publicPath = path.join(__dirname, './client/build'); //maybe this?
const express = require('express');
const app = express();
var mongoose = require('mongoose');
var {mongoose} = require('./server/db/mongoose');
const port = process.env.PORT || 8000;
//app.use('/', express.static(`${__dirname}/client/build`)); //or this?
app.listen(port, () => console.log(`Listening on port ${port}`));
server package.JSON(不知道我是否需要启动脚本。):
{
"name": "example-create-react-app-express",
"version": "1.0.0",
"scripts": {
"start": "node server.js",
"client": "cd client && npm run start",
"server": "nodemon server.js",
"dev": "concurrently --kill-others-on-fail \"npm run server\" \"npm run client\""
},
"engines": {
"node": "9.3.0"
},
"dependencies": {
"body-parser": "^1.18.2",
"express": "^4.16.2",
"lodash": "^4.17.4",
"mongoose": "^5.0.1"
},
"devDependencies": {
"concurrently": "^3.5.0"
}
}
客户端package.JSON(我已经运行了npm run-script build):
{
"name": "example-create-react-app-express",
"version": "0.1.0",
"private": true,
"dependencies": {
"history": "^4.7.2",
"prop-types": "^15.6.0",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"react-router-dom": "^4.2.2",
"react-scripts": "1.1.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
},
"proxy": "http://localhost:8000/"
}
Heroku构建日志(表示成功,但在npm_config_loglevel中出错):
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NPM_CONFIG_PRODUCTION=true
NODE_VERBOSE=false
NODE_ENV=production
NODE_MODULES_CACHE=true
-----> Installing binaries
engines.node (package.json): 9.3.0
engines.npm (package.json): unspecified (use default)
Resolving node version 9.3.0...
Downloading and installing node 9.3.0...
Using default npm version: 5.5.1
-----> Restoring cache
Loading 2 from cacheDirectories (default):
- node_modules
- bower_components (not cached - skipping)
-----> Building dependencies
Installing node modules (package.json + package-lock)
up to date in 0.596s
-----> Caching build
Clearing previous node cache
Saving 2 cacheDirectories (default):
- node_modules
- bower_components (nothing to cache)
-----> Build succeeded!
-----> Discovering process types
Procfile declares types -> (none)
Default types for buildpack -> web
-----> Compressing...
Done: 19.1M
-----> Launching...
Released v11
(site) deployed to Heroku
Here是github文件的链接,如果您可以更容易地看到与文件路径相关的包。
同样,这是未完成的,但在使用npm run dev and a local production server
时完全正常工作。 Heroku正在工作,但不是应该的。我使用的是node v9.3,mongo v3.2。我之前的回复说可以通过向服务器package.json添加一个heroku postbuild来修复它,但是当我尝试这种方法时,我的heroku推送被拒绝了。
这是一个较长的问题,但我确实陷入了困境,所以我非常感谢你们的帮助,并希望有朝一日能够回报其他新人!
答案 0 :(得分:0)
它没有按预期工作的原因是由于以下原因:
答案 1 :(得分:0)
我明白了!
"install": "cd client && npm install && npm run build && cd ..",
添加到服务器package.json中的脚本中,一切正常。
此外,如果其他人有此问题,请确保您的heroku页面上有mlab mongodb作为插件。