接触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 日
如果觉得我的文章对你有用,奖励一杯咖啡吧!