Strapi 工厂导入已更新

页面摘要: 在 Strapi 5 中,应用 init 函数和工厂的导入语法已更新;请使用来自 @strapi/strapi 的 createStrapi 而非 v4 的写法,并且部分遗留导入模式不再受支持。

在 Strapi 5 中,strapi 工厂导入已更新。

本页面是破坏性变更数据库的一部分,提供有关该破坏性变更的信息,以及从 Strapi v4 迁移到 Strapi 5 的附加说明。

代码迁移工具: strapi-public-interface

破坏性变更说明

在 Strapi v4 中

导入方式如下:

  • 使用应用 init 函数:

    import strapi from '@strapi/strapi'; 
    // 或
    const strapi = require('@strapi/strapi');
    
    strapi();
    
  • 使用工厂:

    import strapiDefault from '@strapi/strapi';
    // 或
    import { factories } from '@strapi/strapi';
    // 或
    const { factories } = require('@strapi/strapi');
    // 或
    const { createCoreService } = require('@strapi/strapi').factories;
    // 或
    const strapi = require('@strapi/strapi');
    
    strapiDefault.factories.createCoreService(); // 这在 v5 中不再可能
    strapi.factories.createCoreService();
    factories.createCoreService();
    createCoreService();
    

在 Strapi 5 中

导入方式如下:

  • 使用应用 init 函数

    import { createStrapi } from '@strapi/strapi'; 
    const { createStrapi } = require('@strapi/strapi');
    const strapi = require('@strapi/strapi');
    
    strapi.createStrapi();
    
  • 使用工厂:

    // 使用工厂
    import { factories } from '@strapi/strapi';
    // 或
    const { factories } = require('@strapi/strapi');
    // 或
    const { createCoreService } = require('@strapi/strapi').factories;
    // 或
    const strapi = require('@strapi/strapi');
    
    strapi.factories.createCoreService();
    factories.createCoreService();
    createCoreService();
    
    // 推荐的方式是
    const { factories } = require('@strapi/strapi');
    import { factories } from '@strapi/strapi';
    
    factories.createCoreService();
    

迁移

  • 升级工具 会用 codemod 转换应用实例化。
  • 被移除的工厂模式不会被自动转换。