发现一个宝藏网站用来练习英语,越刷越上瘾! Earthworm这是一个通过构造连词句子来学习英语的项目,从最简单的句子开始慢慢发展到能写越来越复杂的句子,你将通过不断的复现练习直至熟练掌握轻松写出长句子。顺道练习英文打字输入。

源码下载可点击右侧网盘下载

官网地址:https://earthworm.cuixueshe.com/

⚡ 简介

通过用连词造句,可以帮助你更好地学习英语~😊

🚀 如何开始?

以下操作均基于当前项目根目录,请注意确保没有错误!

要求

  • pnpm 版本 >= 8

    corepack enable
  • Node.js 版本 >= v20

    使用 .node-version 中的版本。支持的工具

  • Postgres 版本 >= 14.0.0

  • Redis 版本 >= 5.0.0

  • Docker。请确保它已在您的本地机器上安装并成功运行。

docker --version # Docker version 24.0.7, build afdd53b

node --version # v20+

pnpm -v # 8+

编辑

VSCode

1.安装依赖项

pnpm install

2.配置.env文件

./apps/api/.env.example你可以选择将的内容复制到./apps/api/.env中。注意,’example’文件内含示例配置。主要存储系统的环境变量信息,比如数据库连接地址,用户名,密码,端口,密钥等,后端服务会从这个文件中读取配置,当然你也可以将其改为你自己的配置信息

Windows用户建议使用快捷键复制粘贴,Linux用户可以通过以下命令进行操作。

服务器

cp ./apps/api/.env.example ./apps/api/.env

客户

cp ./apps/client/.env.example ./apps/client/.env

3. 恢复Logto的数据

“logto_db_init_data.zip”中的数据已过时,将很快更新。他不支持[email protected]之后的版本。请手动配置Logto

解压logto_db_init_data.zip.volumes/

unzip logto_db_init_data.zip -d .volumes/

如果你想手动配置 Logto

4.启动Docker Compose服务

后端依赖于 Postgres 和 Redis 服务。使用下面配置的命令启动和停止这些服务package.json

# start
pnpm docker:start

# When needed, execute the following command
# stop
pnpm docker:stop
# delete
pnpm docker:delete
# Complete deletion (including Volume data)
pnpm docker:down

如果您喜欢手动,可以使用以下命令。

docker compose up -d
docker compose stop
docker compose down

# commands compatible with older versions of Docker
docker-compose up -d

5.初始化数据库模式

执行此命令的时候尽量和上一个命令保持一点时间,因为-d刚刚使用的参数会在后台暂停其服务执行,此时docker服务可能还在运行,如果发现错误,则重新执行。

pnpm db:init

6. 创建并上传课程数据

仅在初始数据库初始化期间执行此操作

pnpm db:upload

7.启动后端服务

pnpm dev:serve

8.启动前端服务

pnpm dev:client

🛠️ 关于测试

提交commit之前先运行测试,测试通过后再提交代码,避免为了解决测试问题而多次提交

前端测试

主要是Vitest的单机测试和cypress的自动化测试,执行以下命令:

# Enter the front-end project directory
cd apps/client

# vitest
pnpm test:unit:run
# cypress
pnpm test:e2e:run

# monitor vitest, convenient hot update to see test results
pnpm test:unit:watch

后端测试

主要是Jest单机测试和端到端测试,但是需要访问测试数据库,因此需要确保:

  1. Docker Compose中的testdb和testRedis服务启动正常。
  2. 文件中的配置信息.env.test是正确的,如果没有该文件,可以将该apps/api/.env.test.example文件的内容复制到该apps/api/.env.test文件中,下面提供了命令直接使用。

执行以下命令:

# Enter Backend Project Directory
cd apps/api

# If you have an.env.test file, you don't need to run this step
cp .env.test.example .env.test

# Single test
pnpm test:unit
# End-to-end testing
pnpm test:e2e
# Single test and end-to-end test run together
pnpm test

文档项目

项目基于Vitepress文档,执行以下命令:

# Local Development
pnpm docs:dev

❓ 常见问题

数据库连接失败

我的Docker和里面的数据库都正常运行,但是运行命令的时候db:init还是报错,提示数据库连接失败。

你可以检查文件中的数据库配置是否.env正确,甚至这个文件是否有!😠

如何正确更新课程数据?

当您发现课程数据不正确并进行修改时,您应该使用以下命令来更新数据库中的课程数据。

pnpm db:update

pnpm 安装错误?

有些依赖在安装时需要编译,因此需要有相关的编译环境,如果没有这些环境,编译过程可能会失败。另外,不同的模块可能需要不同的编译环境,因此需要具体问题具体分析。下面是遇到的具体问题及其解决方案。

首先尝试以下命令来更新pnpm

pnpm i -g
# or
pnpm i -g pnpm
# or
npx pnpm i -g pnpm@latest

在 Windows 上安装 argon2 模块时出错

  • 安装 Visual Studio 2015 或更高版本,特别是“使用 C++ 进行桌面开发”组件。(实际上,任何包含 C++ 开发工具和库的组件都可以。)
  • 如果在编译过程中遇到中文显示问题,请chcp 437在命令提示符中执行,然后重新运行安装命令。

Docker 中的 Docker 权限被拒绝?

在 Windows 中使用 WSL2 作为开发环境时,使用以下命令启动 Docker 时出现以下错误docker compose up -d

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied

解决方案

将当前用户添加到docker组

# Add docker user group
sudo groupadd docker
# Add the logged-in user to the docker user group
sudo gpasswd -a $USER docker
# Update user group
newgrp docker
# Test if docker command is working properly
docker images

🤝 前端开发指南

  1. 请勿破坏 Pinia 商店。

    • 使用时可读性会更好store
    • 解构会导致反应性丧失,使用storeToRefs也相当麻烦
  2. 避免在可组合项中包含 UI 逻辑。

    • 例如useMessage
    • 我们将路由器归类为 UI 逻辑,为了便于测试,避免在其中包含与路由器相关的逻辑

仓库地址

GitHub:https://github.com/cuixueshe/earthworm

网站免责声明
一、资源来源与版权

本网站所有资源及文章均源自互联网,经过我们的收集整理后呈现给用户。我们明确声明,本网站不直接参与任何资源的创作或制作过程,仅作为信息的传递者。若您发现本网站上的任何内容侵犯了您的合法权益(包括但不限于版权、商标权、专利权等),请立即通过以下联系方式与我们取得联系。在收到您的反馈并核实情况后,我们将迅速采取相应措施,包括但不限于删除侵权内容,以确保您的合法权益得到及时保护。

二、资源使用与责任

资源鉴别:本网站发布的资源可能包含水印、广告链接或其他引流信息,这是由资源原始来源决定的。我们提醒用户在使用这些资源时,应保持警惕,自行鉴别信息的真实性和适用性,避免受到不必要的干扰或误导。 非商业用途:本网站提供的资源仅供学习、研究及非商业性交流使用。我们鼓励用户尊重原创,支持正版。若您计划将本站资源用于商业目的,请务必先获得合法授权,否则因此产生的一切法律后果将由下载用户自行承担。

三、联系方式

为了更好地服务用户,解决您在使用本网站过程中可能遇到的问题或反馈侵权信息,我们提供了以下联系方式(请将“#”替换为“@”后使用): 联系方式:contact#kukaylib.com

四、免责条款

本网站致力于为用户提供高质量的信息服务,但对于因网络状况、第三方干扰、不可抗力等因素导致的服务中断、数据丢失、信息错误等问题,本网站不承担任何责任。同时,本网站对于用户在使用本站资源过程中可能产生的任何直接、间接、偶然、特殊或惩罚性损失,也不承担任何法律责任。 请用户在使用本网站时,务必遵守相关法律法规及道德准则,自行承担因使用本站资源而产生的所有风险和后果。

五、更新与修订

本网站有权随时更新或修订本免责声明,更新或修订后的免责声明一经发布即具有法律效力。用户应定期访问本页面以了解最新的免责声明内容。 感谢您对本网站的理解与支持!我们将继续努力,为用户提供更加优质、便捷的信息服务。