请注意,本文编写于 687 天前,最后修改于 487 天前,其中某些信息可能已经过时。
接触Strapi4是在某个技术总结文章中看到的,之后到官网简单了解了一下,按照官网文档的说明本地跑通后,试一下有关Strapi4的功能。
环境
- "@strapi/strapi": "4.7.1"
- node:18.14.0
参考资料
安装
安装过程比较耗时,建议耐心等待。本人安装全程使用了代理,中间会出现断断续续的流量消耗,(以为是网络问题,中断了好几次)如果时间过长再中断排查网络代理问题。
文章末尾有报错踩过的坑,可以参考。
快速安装
quickstart
默认使用SQLite数据库
npx create-strapi-app@latest my-project --quickstart
快速安装没有过多介绍,默认回车即可。安装完成后自动启动并打开网页。安装成功如下图所示。
自定义安装
- 文档参考:https://docs.strapi.io/dev-docs/installation/cli
- 本示例使用mysql 8作为数据库,使用TS语言。
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