Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Postgres插件将Strapi后端部署到Heroku?_Heroku_Strapi - Fatal编程技术网

如何使用Postgres插件将Strapi后端部署到Heroku?

如何使用Postgres插件将Strapi后端部署到Heroku?,heroku,strapi,Heroku,Strapi,我一直在使用官方的Strapi教程介绍如何使用postgres将Strapi部署到heroku,在遵循所有说明之后,我的heroku应用程序显示出一个错误。但是,当我检查构建日志时,没有错误,它们显示构建成功消息 构建日志 2020-08-17T15:48:19.744258+00:00 app[web.1]: npm ERR! 2020-08-17T15:48:19.744486+00:00 app[web.1]: npm ERR! Failed at the radio-darya-bac

我一直在使用官方的Strapi教程介绍如何使用postgres将Strapi部署到heroku,在遵循所有说明之后,我的heroku应用程序显示出一个错误。但是,当我检查构建日志时,没有错误,它们显示构建成功消息

构建日志

2020-08-17T15:48:19.744258+00:00 app[web.1]: npm ERR! 
2020-08-17T15:48:19.744486+00:00 app[web.1]: npm ERR! Failed at the radio-darya-backend@0.1.0 start script.
2020-08-17T15:48:19.744753+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-08-17T15:48:19.756754+00:00 app[web.1]: 
2020-08-17T15:48:19.757071+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-08-17T15:48:19.757252+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2020-08-17T15_48_19_747Z-debug.log
2020-08-17T15:48:19.825573+00:00 heroku[web.1]: Process exited with status 1
2020-08-17T15:48:19.869487+00:00 heroku[web.1]: State changed from starting to crashed
2020-08-17T15:48:32.221633+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=radio-darya-backend.herokuapp.com request_id=1bceee5d-4452-4b2a-9638-d5f242b4337c fwd="213.162.246.193" dyno= connect= service= status=503 bytes= protocol=https
2020-08-17T15:48:32.751425+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=radio-darya-backend.herokuapp.com request_id=95d4de1a-5f17-49e3-bed2-b459bce9259e fwd="213.162.246.193" dyno= connect= service= status=503 bytes= protocol=https

package.json依赖项

  "devDependencies": {},
  "dependencies": {
    "knex": "<0.20.0",
    "pg": "^8.3.0",
    "sqlite3": "latest",
    "strapi": "3.1.4",
    "strapi-admin": "3.1.4",
    "strapi-connector-bookshelf": "3.1.4",
    "strapi-plugin-content-manager": "3.1.4",
    "strapi-plugin-content-type-builder": "3.1.4",
    "strapi-plugin-email": "3.1.4",
    "strapi-plugin-upload": "3.1.4",
    "strapi-plugin-users-permissions": "3.1.4",
    "strapi-utils": "3.1.4"
  },


您没有给出当前的错误消息?
几周前,我确实将strapi部署到了heroku,没有出现任何问题。
您确定遵循了strapi文档中的所有步骤吗?
我认为唯一会出错的是数据库连接

首先,您必须在Heroku中安装postgress插件,然后获取配置信息,最后在Heroku中添加环境变量(设置/配置变量),并修改strapi配置文件以从环境变量获取数据库信息。
Strapi文档:

编辑:
Strapi文档目前不正确,database.json文件和位置已更改。请参阅:


我一天前刚刚完成了那个教程。。。对于一个完全的初学者来说,我也遇到了一些问题,比如strapi、postgres和heroku。。。这是我的经验

请按照此处获取postgres和数据库设置:

然后使用此处缺少的部分完成设置:

基本上: 在您的系统上本地安装postgres,创建db和用户并授予权限。 安装不带quickstart标志的strapi,并使用上面使用的详细信息。 使用heroku cli设置从数据库\u url configvar派生的配置。 承诺和推动,一切都会好起来

编辑: 在相关应用程序下的Heroku中:

  • 单击设置并向下滚动到环境变量,然后单击显示配置变量
  • 确保您有一个数据库URL配置变量
  • 确保postgres特定的配置变量与数据库URL匹配
例如,数据库URL=postgres://ebitxebvixeeqd:dc59b16dedb3a1eef84d4999sb4baf@ec2-50-37-231-192.compute-2.amazonaws.com:5432/d516fp1u21ph7b

  • 它是这样读的:postgres://USERNAME:PASSWORD@HOST:PORT:DATABASE\u NAME
另外,在./config/server.js文件中,确保您的主机为0.0.0.0

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  admin: {
    auth: {
      secret: env('ADMIN_JWT_SECRET', '***********************'),
    },
  },
});
同时将database.js配置更改为:

settings: {
    client: 'postgres',
    host: env('DATABASE_HOST', '127.0.0.1'),
    port: env.int('DATABASE_PORT', 5432),
    database: env('DATABASE_NAME', 'strapi'),
    username: env('DATABASE_USERNAME', 'postgres'),
    password: env('DATABASE_PASSWORD', ''),
    ssl: env.bool('DATABASE_SSL', false),
  },
  options: {}

您的问题或日志中没有太多内容,但以上基本上是我遇到的一些常见问题。

将此代码直接复制到config/database.js中

module.exports = ({ env }) => ({
  defaultConnection: 'default',
  connections: {
    default: {
      connector: 'bookshelf',
      settings: {
        "client":"postgres",
        "host":"${process.env.DATABASE_HOST}",
        "port": "${process.env.DATABASE_PORT}",
        "database": "${process.env.DATABASE_NAME}",
        "username": "${process.env.DATABASE_USERNAME}",
        "password": "${process.env.DATABASE_PASSWORD}",
        "ssl": { "rejectUnauthorized": false }
      },
      options: {
       
      },
    },
  },
});
her
module.exports = ({ env }) => ({
defaultConnection: 'default',
connections: {
default: {
connector: 'bookshelf',
settings: {
client:'postgres',
host:`${process.env.DATABASE_HOST}`,
port: `${process.env.DATABASE_PORT}`,
database: `${process.env.DATABASE_NAME}`,
username: `${process.env.DATABASE_USERNAME}`,
password: `${process.env.DATABASE_PASSWORD}`, 
ssl: { "rejectUnauthorized": false }
},
options: {
},
},
},
});  

这对我来说适用于v3.x strapi

//路径:./config/env/production/database.js
const parse=require('pg-connection-string')。parse;
const config=parse(process.env.DATABASE_URL);
module.exports=({env})=>({
defaultConnection:'default',
连接:{
默认值:{
连接器:“书架”,
设置:{
客户:“博士后”,
主机:config.host,
端口:config.port,
数据库:config.database,
用户名:config.user,
密码:config.password,
},
选项:{
ssl:false,
},
},
},
});
我们还需要将Heroku上的NODE_ENV变量设置为production,以确保使用这个新的数据库配置文件

heroku config:set NODE_ENV=production 看


注意这里是v3.x而不是beta版。谷歌“strapi heroku postgres”目前仍提供旧版测试版。

我没有错误消息,因为构建日志显示一切正常。在我更新代码后,它仍然无法工作,构建日志中仍然没有错误消息。在Heroku应用程序配置页面的右上角有一个More按钮。当你点击它时,会有一个“查看日志”链接,它会给你更多的信息,当Heroku试图启动你的应用程序时会发生什么。如果您仍然无法让它工作,我建议您重新开始,以便测试流程。安装一个新的strapi-quickstart并验证开发是否正常工作。接下来创建一个新的heroku应用程序和postgres插件,获取环境变量的信息并在heroku中设置它们。配置strapi数据库配置文件,构建并部署到heroku。测试是否一切正常。我查看了构建日志,它说在strapi启动时失败。我尝试重新开始,但同样的错误再次发生。我相信这是一个数据库连接问题,其他一切都很简单。通过将数据库连接信息写入strapi配置文件,可以省去环境变量。这将省去一些可能的错误源。然后,您可以将一些错误信息写入db配置文件(config/database.js),然后查看是否会出现不同的错误。如果您熟悉js,可以在database.js中添加一些调试打印(调试可能还需要修改一些其他设置),以便查看文件是否已读取。我也有这个问题,但这不起作用。我的配置文件夹中没有环境/生产目录,因此创建了它们。我像你说的那样保留了database.js文件,但它不起作用。这不是我不认为的解决办法。是的,我的错!请按照这个步骤做,它正在工作,我已经测试过了!此外,您还必须使用heroku cli中的postgress env变量为数据库主机、数据库端口、数据库名称、数据库用户名、数据库密码配置heroku