0
点赞
收藏
分享

微信扫一扫

strapi:常见问题

为什么我不能在生产/暂存中创建或更新内容类型?

Strapi 将模型配置文件(定义模型模式的内容)存储在诸如​​./src/api/restaurant/content-types/restaurant/schema.json​​. 由于 Node.js 的工作方式,为了使更改生效,需要 Node 重新启动服务器。这可能会导致您的生产服务停机,同样应该在某种源代码控制中跟踪这些更改。

通常,您的开发“流程”将遵循以下路径:

  • 开发 - 在您的主机本地开发您的 Strapi 应用程序,然后将更改推送到源代码管理
  • 暂存 - 将更改从源代码控制部署到“类生产”环境以进行测试
  • 生产 - 如果不需要其他更改,则部署到生产中
  • 根据需要重复,建议您在进行时正确地对应用程序进行版本控制和测试

目前和将来都没有计划允许在生产环境中创建或更新模型,目前也没有计划将模型设置移到数据库中。对此没有已知或推荐的解决方法。

​​​​Strapi 是否处理内容的部署或迁移?

Strapi 目前不提供任何工具来在不同环境之间(即从开发到生产)迁移或部署您的数据更改。除了 Content-Manager 设置外,要了解有关此选项的更多信息,请参阅以下​​CLI 文档​​。

​​#​​用户无法登录管理面板

随着 Strapi beta 版本的发布,发生了根本性的变化,最终用户(REST 和 GraphQL 用户)从管理员(管理面板用户)中分离出来,普通用户无法访问管理面板。如果您想了解更多有关为什么进行此更改的信息,可以阅读 Strapi​​博客文章 (打开新窗口)​​关于它。

Strapi 发布了新的管理和权限(RBAC - 基于角色的访问控制),它允许对用户在管理面板中可以访问的内容进行一定程度的控制,并包括一些字段级权限。您现在还可以为角色授予内容类型、单一类型、插件和设置等内容的特定权限。

当这个新插件发布时,有两个版本:

  • 社区版
  • 企业版

默认情况下,社区版包括 3 个预定义的角色(管理员、编辑、作者)。升级到企业版将解锁无限数量的角色。将有某些基于版本的其他字段级权限限制,我们将构建详细指南,说明“基本”与“高级”RBAC 功能中包含的内容。要详细了解所包含的内容以及定价,请参阅我们的​​定价页面 (打开新窗口)​​.

​​#​​关系没有保持它们的排序顺序

对于组件,有一个名为的隐藏字段​​order​​,允许条目保持它们的排序,但是对于关系,没有这样的字段。如果您考虑组件条目的典型计数与基于关系的条目(回想起来它们在后端的功能相同),通常会有更多的关系。如果关系也应用了一个​​order​​字段,那么在尝试更新顺序时可能会导致性能显着下降,同样,在关系可以附加到多个条目的情况下,维护顺序将非常困难。

目前没有推荐的方法来自动处理这个问题,相反,您可能需要创建自定义控制器来在您自己的项目中处理这个问题。

我们正在评估将来是否会在本地添加对此的支持。我们将在可用时添加更多详细信息。

​​#​​为什么我的应用程序的数据库和上传在 PaaS 上重置?

如果您曾经​​--quickstart​​创建过 Strapi 项目,则默认情况下使用 SQLite 数据库。PaaS 系统(Heroku、DigitalOcean Apps、Google App Engine 等)文件系统通常是​​短暂的 (打开新窗口)​​或只读意味着每次重置 dyno(容器)时,所有文件系统更改都将丢失。由于 SQLite 和本地上传都存储在文件系统中,因此自上次 dyno 重置以来对这些所做的任何更改都将被删除。通常,测功机每天至少重置一次,在大多数情况下每天重置多次,或者在将新代码推送到这些服务时重置。

建议您使用像 Heroku 的 PostgreSQL 这样的数据库插件。对于文件上传,您需要使用第三方提供商之一,例如 Cloudinary 或 AWS S3。

​​#​​Strapi 可以在无服务器环境中运行吗?

由于应用程序的结构,Strapi 不太适合无服务器环境。Strapi 启动时会发生几个动作,这可能需要几秒钟。无服务器部署通常需要应用程序快速冷启动。Strapi 旨在作为一项永远在线的服务运行,我们不打算在可预见的未来减少冷启动时间。因此,在无服务器环境中运行 Strapi 并不是一种很好的体验,因为每个请求都需要几秒钟而不是几毫秒来响应。在冷启动或热启动之间进行选择是许多软件开发人员需要在很早的阶段就做出的架构决策,因此在选择使用 Strapi 时请考虑这一点。

​​#​​我可以在模型设置中存储我的 Content Manager 布局配置吗?

目前 Strapi 不支持这一点,添加了一个​​config:dump​​和命令,以便在不同部署和环境之间移动时更容易迁移这些设置。​​config:restore​

我们不提供在模型设置中存储这些配置的功能,原因如下:

  • 如果在管理界面中进行内容国际化和翻译,它将产生冲突。
  • 根据角色和权限,布局可能会有所不同。
  • 虽然无论创建什么内容,模型都是相同的,但贡献界面可能不同。例如,我们有一个想法,只为贡献者创建一个移动应用程序。标签和布局配置可能因设备和界面而异。

出于所有这些原因以及其他原因,我们认为如果我们将配置存储在模型设置文件中,这将是一个错误并且可能会使用户感到困惑。最终的解决方案是使跨环境的迁移和部署更加容易。

​​#​​如何自定义插件?

​​Strapi 使用称为扩展的​​系统,因为插件存储在​​node_modules​​文件夹中。由于这种扩展,Strapi 可以检测文件的较新版本并将其用作存储在​​node_modules​​.

您可以在不分叉插件包的情况下修改这些文件,但是您将失去轻松更新的能力。在每个版本发布后,您需要将您的更改与新版本中的更改进行比较,并相应地修改您的文件版本。

​​#​​我可以添加自己的第 3 方身份验证提供商吗?

是的,您可以按照以下​​指南​​进行操作,也可以查看​​用户权限 (打开新窗口)​​并提交一个拉取请求以包括每个人的提供者。最终 Strapi 确实计划从当前的授权/最纯粹的提供者转移到类似于上传提供者的分裂性质的系统。

但是,目前没有关于此迁移的预计到达时间。

​​#​​Strapi 是否允许我更改默认 ID 类型或名称?

不,目前没有允许更改默认 ID 名称的能力,也不允许您切换数据类型(例如 PostgreSQL 中的 UUID),将来会考虑对此的支持。

​​#​​你能过滤和/或深度过滤动态区域和多态关系吗?

目前我们不打算允许对动态区域或多态关系进行过滤,因为这样做会带来各种复杂性和性能问题。

​​#​​如何使用 Strapi 设置 SSL?

Strapi 本身没有实现 SSL 解决方案,这是因为在低端口上直接向公共 Web 提供 Node.js 应用程序是极其不安全的。

在基于 Linux 的操作系统上,您需要 root 权限才能绑定到 1024 以下的任何端口,并且典型的 SSL 是端口 443,您需要以 root 身份运行您的应用程序。

同样,由于 Strapi 是基于 Node.js 的,为了使 SSL 证书发生更改(比如它何时过期),您需要重新启动应用程序才能使更改生效。

由于这两个问题,建议您使用代理应用程序,例如​​Nginx​​、​​Caddy​​、​​HAProxy​​、Apache、Traefik 或许多其他应用程序来处理到 Strapi 的边缘路由。​​环境server.json​​中有设置来处理上游代理。代理块需要填写所有设置,并将修改任何后端插件,例如身份验证提供程序和上传插件,以用​​localhost:1337​​代理 URL 替换您的标准。

​​#​​我可以在 Strapi 项目中使用 TypeScript 吗?

从 v4.2.0-beta.1 开始,Strapi 项目支持 TypeScript 整个核心开发人员文档和​​专用的 TypeScript 支持页面​​都提供了 TypeScript 代码示例。

​​#​​X 功能可用吗?

你可以看到​​公共路线图 (打开新窗口)​​查看当前正在处理哪些功能请求,哪些尚未开始,并添加新的功能请求。

举报

相关推荐

常见问题

Linux常见问题

nginx常见问题

PHP常见问题

oracle常见问题

0 条评论