git repo https://github.com/detoner777/email-feedback-app
heroku错误日志:
2019-08-20t09:44:08.211815+00:00Heroku[router]:at=error code=h12 desc=“请求超时”方法=get path=“/auth/google/callback?fuserinfo.profile&authuser=0&session_state=330af188f3789437fd21ab099ebe776784cfe500.3fb5&prompt=none”host=mystrious-thicket-20426.herokuapp.com request_id=59b62556-d07c-42ae-8f7f-e89b3ab5b735 fwd=“31.134.127.229”dyno=web.1连接=1ms服务=30000ms状态=503字节=0协议=https2019-08-20t09:52:03.838240+00:00 at=info method=head path=“/”host=mystrious-thicket-20426.herokuapp.com request_id=81a31581-1aa6-478d-98af-68b6c479e32a fwd=“217.182.175.162”dyno=web.1连接=0ms服务=1ms状态=200字节=289协议=HTTPS
//inex.js
const express = require('express');
const mongoose = require('mongoose');
const cookieSession = require('cookie-session');
const passport = require('passport');
const bodyParser = require('body-parser');
const keys = require('./config/keys');
require('./models/User');
require('./services/passport');
mongoose.connect(keys.mongoURI);
const app = express();
app.use(bodyParser.json());
app.use(
cookieSession({
maxAge: 30 * 24 * 60 * 60 * 1000,
keys: [keys.cookieKey]
})
);
app.use(passport.initialize());
app.use(passport.session());
require('./routes/authRoutes')(app);
require('./routes/billingRoutes')(app);
if (process.env.NODE_ENV === 'production') {
app.use(express.static('client/build'));
const path = require('path');
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
}
const PORT = process.env.PORT || 5000;
app.listen(PORT);
// passport.js
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const mongoose = require('mongoose');
const keys = require('../config/keys');
const User = mongoose.model('users');
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
User.findById(id).then(user => {
done(null, user);
});
});
passport.use(
new GoogleStrategy(
{
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: '/auth/google/callback',
proxy: true
},
async (accessToken, refreshToken, profile, done) => {
const existingUser = await User.findOne({ googleId: profile.id });
if (existingUser) {
return done(null, existingUser);
}
const user = await User({ googleID: profile.id }).save()
done(null, user);
}
)
);
解决了它,以下是对我有效的:
请检查您的Mongodb Atlas prod数据库的用户/密码是否与您在Heroku中设置的MONGO_URI变量正确匹配,这是导致我出现此问题的原因。我认为这里很容易出现错别字,因为在创建数据库用户密码后,您无法看到该用户的密码。还要注意,用户不应该是“只读”的,而且这与登录Mongodb Atlas时使用的用户/密码组合不同。
我发现身份验证回调失败并出现超时错误的原因是文件passport.js中定义的Google策略的回调从未调用方法done()。这反过来是因为在MongoDB中查找用户的查询从未完成,因为Mongoose无法连接到mlab.com数据库。我尝试在mlab中为prod数据库创建一个新用户,并在Heroku环境变量中更新该用户,它成功了!
问题内容: 香港专业教育学院一直试图与heroku合作。我可以成功地使其在开发模式下工作,但是当我尝试推送到heroku时,我得到了 然后,我阅读并关注了http://blog.redistogo.com/2010/07/26/resque-with-redis-to- go/ 我把站点中列出的配置放了,但是出现了以下错误 我把我的初始化器/ resque.rb 但是它引发了上面提到的错误。在我的
问题内容: 我是Yesod的新手,无法静态构建Yesod,因此可以部署到Heroku。 我已更改默认的.cabal文件以反映静态编译 而且它不再构建。我收到一堆警告,然后是许多未定义的引用,如下所示: 如果我仅使用just进行编译,而没有进行 任何编译,则一切正常,但是当尝试在Heroku上启动时,应用程序崩溃。 我尝试按照此处的建议将libgmp.so.10添加到LD_LIBRARY_PATH
当我试图在heroku上部署springboot应用程序时,出现了以下错误: 无法执行目标org.apache.Maven.plugins:maven-compiler-plugin:3.8.1:在项目后端编译(default-compile):错误编译:无效的目标版本:11->[Help 1]Remote:[error]Remote:[error]要查看错误的全部堆栈跟踪,请使用-e开关重新运行
问题内容: 我正在尝试将Flask应用程序部署到Heroku,但是在推送代码时出现错误 我不确定该怎么做,我尝试将端口从5000更改为33507,但无济于事。我的Procfile看起来像这样: main.py 是启动服务器的主要Flask文件。 问题答案: 在Heroku托管的Flask应用中,我使用以下代码启动服务器: 在本地开发时,它将使用端口5000,在生产环境中,Heroku将设置环境变量
我设法让它在本地工作(不同的集群,单独的settings.py),但不是在部署到Heroku之后。 Heroku-自动添加DATABASE_URL配置var与postgresql,我不能删除/编辑它。 MongoDB Atlas-我已经将MongoDB Atlas集群设置为允许来自任何地方的IP。密码没有有趣的字符。 django生产设置。py公司 我在部署后直接运行迁移,它都是绿色的OK 一切都
推荐先去了解下 在 Heroku 里部署 node.js 应用的文档。 首先,我们需要告诉 Heroku 安装项目的开发依赖包 devDependencies (以便能在 Heroku 环境下运行 npm run build): heroku config:set NPM_CONFIG_PRODUCTION=false 同时,我们想让应用以 生产模式 运行,绑定的主机IP为 0.0.0.0: he