接触Strapi4是在某个技术总结文章中看到的,之后到官网简单了解了一下,按照官网文档的说明本地跑通后,试一下有关Strapi4的功能。

环境

  • "@strapi/strapi": "4.7.1"
  • node:18.14.0

参考资料

官网文档:https://docs.strapi.io/

安装

安装过程比较耗时,建议耐心等待。本人安装全程使用了代理,中间会出现断断续续的流量消耗,(以为是网络问题,中断了好几次)如果时间过长再中断排查网络代理问题。

文章末尾有报错踩过的坑,可以参考。

快速安装

  • quickstart默认使用SQLite数据库
npx create-strapi-app@latest my-project --quickstart

快速安装没有过多介绍,默认回车即可。安装完成后自动启动并打开网页。安装成功如下图所示。

自定义安装

npx create-strapi-app@latest my-project
# 'npx' runs a command from an npm package
# 'create-strapi-app' is the Strapi package
# '@latest' indicates that the latest version of Strapi is used
# 'my-project' is the name of your Strapi project

安装过程各选项如下

等待过程需要先在mysql中创建数据库,名称是上面填入的。

等待安装完成后,输入如下命令。

cd .\strapi-project-2\
npm run develop

看到这个节目,安装完成。输入用户、密码进入系统。

修改数据库的配置项

在项目根目录.env文件中

# Database
DATABASE_CLIENT=mysql
DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_NAME=strapiproject2
DATABASE_USERNAME=root
DATABASE_PASSWORD=root
DATABASE_SSL=false

报错排查

mysql报错

使用npm run develop 提示如下
[2023-03-06 13:47:59.230] debug: ⛔️ Server wasn't able to start properly.
[2023-03-06 13:47:59.235] error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Sequence._packetToError (D:\project\strapi-project-2\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
    at Handshake.ErrorPacket (D:\project\strapi-project-2\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18)
    at Protocol._parsePacket (D:\project\strapi-project-2\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (D:\project\strapi-project-2\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (D:\project\strapi-project-2\node_modules\mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (D:\project\strapi-project-2\node_modules\mysql\lib\protocol\Protocol.js:38:16)
    at Socket.<anonymous> (D:\project\strapi-project-2\node_modules\mysql\lib\Connection.js:88:28)
    at Socket.<anonymous> (D:\project\strapi-project-2\node_modules\mysql\lib\Connection.js:526:10)
    at Socket.emit (node:events:513:28)
    at Socket.emit (node:domain:489:12)
    --------------------
    at Protocol._enqueue (D:\project\strapi-project-2\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    at Protocol.handshake (D:\project\strapi-project-2\node_modules\mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (D:\project\strapi-project-2\node_modules\mysql\lib\Connection.js:116:18)
    at D:\project\strapi-project-2\node_modules\knex\lib\dialects\mysql\index.js:66:18
    at new Promise (<anonymous>)
    at Client_MySQL.acquireRawConnection (D:\project\strapi-project-2\node_modules\knex\lib\dialects\mysql\index.js:61:12)
    at create (D:\project\strapi-project-2\node_modules\knex\lib\client.js:254:39)

解决方法

本人mysql使用docker方式安装,在容器中进入mysql,输入如下。

ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'root';

flush privileges;

如果还是无法连接,尝试加入@'localhost'

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

关于此问题的详情,请参考: stackoverflow

最后修改:2023 年 09 月 22 日
如果觉得我的文章对你有用,奖励一杯咖啡吧!