atls-academy / gochicus.github.io

Study playground from noob to engineer
https://gochicus.atls.academy
GNU General Public License v3.0
0 stars 1 forks source link

WIP(frontend-study-gochicus): yarn2 migration in progress #89

Closed gochicus closed 3 years ago

gochicus commented 3 years ago

ISSUES CLOSED: #88

TFK70 commented 3 years ago

@gochicus ты смотрел как app тут оформлен?

  1. Не нужно ничего дублировать, укажи в воркспейсах прямой путь только до web-diary: "practice/web-diary/**/*"
  2. Почему pages находятся не в app?
  3. Почему next.config.js не в app?
  4. Почему в app нету скриптов запускающих проект, как мы и договаривались?
gochicus commented 3 years ago

@TFK70 Да, собственно структуру и постарался сделать похожей:

TFK70 commented 3 years ago

@gochicus я не понимаю почему файлы необходимые для запуска приложения находятся вне app и почему у тебя весь твой проект находится в src По-крайней мере в серенити я такого не припомню, там страницы являются отдельными пакетами, которые потом устанавливаются в app как зависимости и экспортируются в pages по соответствующим роутам буквально в 1 строку, твой проект даже отдаленно ничего подобного не напоминает

Ну и еще:

  1. Я не понимю зачем ты используешь ReactDOM руками (ReactDOM.render)
  2. Ты должен оборачивать свое приложение в провайдеры через кастомный app (_app.tsx), см. доку некста. Судя по всему ты на тестовом проекте так с ним и не поигрался, так что попробуй сначала добавить пару провайдеров там, а потом внедряй к себе. Примеры реализаций можешь найти в репозитории nextjs в атлантисе, ссылку уже оставлял
gochicus commented 3 years ago

@TFK70 Посмотри, пожалуйста, структуру, так оно должно выглядеть?

TFK70 commented 3 years ago

@gochicus все, что до папки src - верно, но

  1. Где pages?
  2. Где index (http сервер где инициализируется next)?
  3. Чтобы next понял что ты собираешься переписать встроенный app твой файл должен называться _app.tsx (дока)
gochicus commented 3 years ago

@TFK70 Не закинулось почему-то, сейчас докину.

TFK70 commented 3 years ago

@gochicus 1. Зачем тебе 2 тсконфига?

  1. Зачем тебе App.tsx? В серенити же есть пример экспорта в pages, у тебя должно быть точно так же, без всяких Result

Конечно можешь это оставить пока у тебя приложение не запустится, если так удобнее, но в результате такого быть точно не должно

gochicus commented 3 years ago

@TFK70 я к чему, если структура правильная, то это билдится должно?

TFK70 commented 3 years ago

@gochicus перемести next.config.js и tsconfig в src, используй next@10.0.5 и тогда да, должно

gochicus commented 3 years ago

@TFK70 так next.config доожен же быть рядом с package, разве нет?

TFK70 commented 3 years ago

@gochicus нет и тебе не обязательно такие вещи у меня спрашивать, проверил бы сам

TFK70 commented 3 years ago

@gochicus

import express from 'express'
import next    from 'next'
import path    from 'path'

const bootstrap = async () => {
  const app = next({
    dev: process.env.NODE_ENV !== 'production',
    dir: process.env.NODE_ENV !== 'production' ? path.join(__dirname, '../src') : __dirname,
  })

  const handle = app.getRequestHandler()

  await app.prepare()

  const server = express()

  server.get('*', (req, res) => handle(req, res))

  server.listen(process.env.PORT || 3000)
}

bootstrap()

https://github.com/atls/serenity/blob/dev/frontend/site/app/src/index.ts

gochicus commented 3 years ago

@TFK70 всё билдится, но почему-то при запуске dev pages не находится. Возможно мне каких-то пакетов не хватает?

 Update failed: Error: apply() is only allowed in ready status
                             at /home/aleksandr/Desktop/project/frontend-study-gochicus/practice/web-diary/app/dist/index.js:1802:21
●  (node:24028) UnhandledPromiseRejectionWarning: Error: > Couldn't find a `pages` directory. Please create one under the project root
●      at findPagesDir (/home/aleksandr/Desktop/project/frontend-study-gochicus/.yarn/__virtual__/next-virtual-3faeefb9bb/0/cache/next-npm-10.2.3-e1de0387ed-715c83439f.zip/node_modules/next/dist/lib/find-pages-dir.js:3:170)
●      at new DevServer
   (/home/aleksandr/Desktop/project/frontend-study-gochicus/.yarn/__virtual__/next-virtual-3faeefb9bb/0/cache/next-npm-10.2.3-e1de0387ed-715c83439f.zip/node_modules/next/dist/server/next-dev-server.js:2:1761)
●      at NextServer.createServer
   (/home/aleksandr/Desktop/project/frontend-study-gochicus/.yarn/__virtual__/next-virtual-3faeefb9bb/0/cache/next-npm-10.2.3-e1de0387ed-715c83439f.zip/node_modules/next/dist/server/next.js:1:2904)
●      at /home/aleksandr/Desktop/project/frontend-study-gochicus/.yarn/__virtual__/next-virtual-3faeefb9bb/0/cache/next-npm-10.2.3-e1de0387ed-715c83439f.zip/node_modules/next/dist/server/next.js:1:3371
●      at async NextServer.prepare
   (/home/aleksandr/Desktop/project/frontend-study-gochicus/.yarn/__virtual__/next-virtual-3faeefb9bb/0/cache/next-npm-10.2.3-e1de0387ed-715c83439f.zip/node_modules/next/dist/server/next.js:1:2679)
●      at async bootstrap (webpack-internal:///./practice/web-diary/app/src/index.ts:17:5)
●  (Use `node --trace-warnings ...` to show where the warning was created)
●  (node:24028) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with
   .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
●  (node:24028) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
TFK70 commented 3 years ago

@gochicus путь до src неверный

  1. index.ts должен находится в src
  2. в app должно быть это const app = next({ dev: process.env.NODE_ENV !== 'production', dir: process.env.NODE_ENV !== 'production' ? path.join(dirname, '../src') : dirname, })
gochicus commented 3 years ago

@TFK70

  1. Да, он в src
  2. в смысле в _app ?
TFK70 commented 3 years ago

@gochicus а что ты в _app собрался делать? index.ts у тебя должен выглядеть так

import express from 'express' import next from 'next' import path from 'path'

const bootstrap = async () => { const app = next({ dev: process.env.NODE_ENV !== 'production', dir: process.env.NODE_ENV !== 'production' ? path.join(dirname, '../src') : dirname, })

const handle = app.getRequestHandler()

await app.prepare()

const server = express()

server.get('*', (req, res) => handle(req, res))

server.listen(process.env.PORT || 3000) }

bootstrap()

gochicus commented 3 years ago

@TFK70 нужно понимать, что руками я эти директории не создавал и не переименовывал. Сначала,как в доках, инсталляция хаски, потом гит хуков. Потом установка гит хуков с определенной командой, там в консоли при вводе новой команды появляется надпись hook updated, я думал он меняется, а не все подряд туда пихает. Попробую удалить папки,все заново поставить как за комп сяду. Если есть какие-то советы по очередности команд, напиши. Как я делал уже написал.

TFK70 commented 3 years ago

@gochicus А еще нужно понимать что у тебя приложение не билдится и в деве не поднимается, ты как проверял-то? И еще раз насчет хаски - в доке есть абсолютно все необходимое, я указал где должен лежать прекоммит хук, его можно создать в необходимом месте так же через cli, читай внимательнее, ищи по кейвордам

gochicus commented 3 years ago

@TFK70 Нормально билдилось и запускалось, когда проверял, не думаю что husky мог повлиять на билд, но если так, проверю.

TFK70 commented 3 years ago

@gochicus Оно даже в чеках упало если что https://github.com/atls-academy/gochicus.github.io/runs/3264527923#step:7:15

gochicus commented 3 years ago

@TFK70 Я открываю твою ссылку, он мне показывает выполненные чеки, открываю ветку, показывает, что последний комит чеки прошёл

TFK70 commented 3 years ago

@gochicus Ты лог failed to compile не видишь? https://github.com/atls-academy/gochicus.github.io/runs/3264527923#step:7:13