에러

node.js 버전

 npm WARN EBADENGINE Unsupported engine {
 npm WARN EBADENGINE package: 'DocFlow_Hugo@0.0.0',              
 npm WARN EBADENGINE required: { node: '>=20.11.0' },            
 npm WARN EBADENGINE current: { node: 'v18.17.1', npm: '9.6.7' } 
 npm WARN EBADENGINE }                                           

Cloudflare Pages에서 사용하는 Node.js 버전을 업그레이드해야 합니다. Cloudflare Pages에서는 .node-version 파일을 사용하여 Node.js 버전을 설정할 수 있습니다. 다음 단계에 따라 프로젝트의 루트 디렉토리에 .node-version 파일을 추가하고 필요한 Node.js 버전을 설정할 수 있습니다.

1. .node-version 파일 추가

  1. 프로젝트의 루트 디렉토리에 .node-version 파일을 생성합니다.

  2. 파일 내용에 필요한 Node.js 버전을 지정합니다. 예를 들어, 20.11.0 버전을 사용하려면 파일 내용은 다음과 같습니다:

20.11.0

2. package.json 파일 업데이트

이미 package.json 파일의 engines 섹션이 Node.js 버전을 요구하고 있으므로, 이 부분은 그대로 두면 됩니다. 하지만, 확인 차 다시 적어두겠습니다:

"engines": {
  "node": ">=20.11.0"
}

3. Cloudflare Pages 설정 업데이트

  1. Cloudflare Pages 대시보드로 이동합니다.
    • Environment variables 설정:
    • Environment variables 탭을 선택합니다.
    • Add variable 버튼을 클릭합니다.
    • Name 필드에 NODE_VERSION을 입력하고, Value 필드에 20.11.0을 입력합니다.
    • Save 버튼을 클릭하여 환경 변수를 저장합니다.

4. 로컬에서 빌드 테스트

로컬 환경에서도 Node.js 버전을 업데이트하여 동일한 환경을 테스트합니다. 이를 위해 Node Version Manager (nvm)을 사용할 수 있습니다.

  1. nvm을 사용하여 Node.js 20.11.0 버전을 설치합니다:
nvm install 20.11.0
nvm use 20.11.0
  • nvm use 20.11.0을 통해 설치한 Node.js 버전을 사용하도록 설정합니다.

  • 프로젝트 디렉토리에서 종속성을 다시 설치하고 빌드를 테스트합니다:

npm install
npm run build

5. 변경 사항 푸시 및 배포

위의 설정을 완료한 후 변경 사항을 GitHub 저장소에 푸시하고 Cloudflare Pages에서 자동으로 배포가 트리거되도록 합니다:

git add .node-version package.json
git commit -m "Update Node.js version to 20.11.0"
git push origin master

NPM 패키지 문제

npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported

경고 메시지들은 오래된 NPM 패키지를 사용하고 있음을 나타내며, 이는 inflightglob 패키지가 더 이상 지원되지 않거나 오래된 버전이라는 경고입니다. 이를 해결하기 위해서는 이러한 패키지를 업데이트하거나, 이를 사용하는 패키지를 업데이트하는 것이 좋습니다. 그러나 이는 실제 빌드 오류와는 무관할 수 있습니다. 하지만 장기적으로 안정성을 위해 업데이트를 고려하는 것이 좋습니다.

1. inflight 패키지 경고 해결

inflight 패키지는 더 이상 지원되지 않으며 메모리 누수를 일으킬 수 있으므로 대체 패키지로 전환하는 것이 좋습니다. 일반적으로 inflight를 직접 사용하지 않고, 다른 패키지의 종속성으로 포함되어 있을 수 있습니다.

2. glob 패키지 경고 해결

glob 패키지의 경우 v9 이전 버전은 더 이상 지원되지 않습니다. 따라서 glob 패키지의 최신 버전으로 업데이트하는 것이 좋습니다.

종속성 업데이트 절차

  1. 프로젝트의 종속성 업데이트: package.json 파일을 열어 사용 중인 패키지를 확인하고 업데이트합니다.

  2. 패키지 업데이트: 종속성을 최신 버전으로 업데이트하기 위해 npm outdated 명령어를 사용하여 업데이트 가능한 패키지를 확인하고, npm update 또는 수동으로 버전을 수정합니다.

npm outdated
npm update

필요한 경우 직접 종속성 수정: package.json 파일에서 직접 오래된 패키지의 버전을 최신 버전으로 수정할 수도 있습니다.

{
  "dependencies": {
    "glob": "^9.0.0",
    "inflight": "npm package로 교체하거나 직접 제거"
  }
}

다시 설치: 종속성을 다시 설치합니다.

rm -rf node_modules package-lock.json
npm install

파일 누락

ERROR render of "taxonomy" failed: "/opt/buildhome/repo/node_modules/@hyas/core/layouts/_default/baseof.html:3:5": execute of template failed: template: _default/terms.html:3:5: executing "_default/terms.html" at <partial "head/head" .>: error calling partial: "/opt/buildhome/repo/node_modules/@hyas/core/layouts/partials/head/head.html:15:8": execute of template failed: template: partials/head/head.html:15:8: executing "partials/head/head.html" at <partial "head/seo" .>: error calling partial: "/opt/buildhome/repo/node_modules/@hyas/seo/layouts/partials/head/seo.html:1:4": execute of template failed: template: partials/head/seo.html:1:4: executing "partials/head/seo.html" at <partial "seo/_all" .>: error calling partial: "/opt/buildhome/repo/node_modules/@hyas/seo/layouts/partials/seo/_all.html:9:4": execute of template failed: template: partials/seo/_all.html:9:4: executing "partials/seo/_all.html" at <partial "seo/opengraph" .>: error calling partial: "/opt/buildhome/repo/node_modules/@hyas/seo/layouts/partials/seo/opengraph.html:7:15": execute of template failed: template: partials/seo/opengraph.html:7:15: executing "partials/seo/opengraph.html" at <partial "_funcs/get-page-images" .>: error calling partial: partial "_funcs/get-page-images" not found

이 오류 메시지는 특정 템플릿 파일에서 사용되는 partial 파일이 누락되었거나 올바르게 설치되지 않았음을 나타냅니다.

1. 누락된 partial 파일 확인 및 추가

node_modules/@hyas/seo/layouts/partials/seo/opengraph.html 파일에서 _funcs/get-page-images partial 파일을 찾을 수 없다고 합니다.

_funcs/get-page-images.html 파일 추가

다음과 같이 프로젝트의 layouts/partials/_funcs/get-page-images.html 경로에 파일을 추가해보세요:

{{ $images := slice }}
{{ if .Params.images }}
  {{ $images = .Params.images }}
{{ end }}
{{ return $images }}

node_modules/@hyas/seo/layouts/partials/seo/opengraph.html 파일의 참조 경로를 확인합니다.

{{ $images = partial "partials/_funcs/get-page-images" . }}

2. 템플릿 파일에서의 참조 수정

필요한 partial 파일이 존재하지 않는다면, 템플릿 파일에서 해당 partial 파일의 참조를 주석 처리하거나 제거할 수 있습니다. 예를 들어, node_modules/@hyas/seo/layouts/partials/seo/opengraph.html 파일을 수정할 수 있습니다:

<!-- node_modules/@hyas/seo/layouts/partials/seo/opengraph.html -->
{{/* partial "_funcs/get-page-images" . */}}

3. 패키지 업데이트 및 재설치

Hyas 테마와 관련 패키지들을 최신 버전으로 업데이트하고 재설치합니다.

rm -rf node_modules package-lock.json
npm install

MediaType Parsing

Error: error building site: "/opt/buildhome/repo/content/docs/Deployment/Guide/Git 설정 기타.md:1:1": "/opt/buildhome/repo/node_modules/@hyas/images/layouts/_default/_markup/render-image.html:155:12": execute of template failed: template: _default/_markup/render-image.html:155:12: executing "_default/_markup/render-image.html" at <$r.MediaType.SubType>: can't evaluate field MediaType in type string
  • doks theme - MediaType Parsing error 참조

  • HUGO VERSION 에 대해 다음과 같이 설정 가능

    • 설정(Settings) 탭을 클릭합니다.
    • 환경 변수 추가:
      • 환경 변수(Environment variables) 섹션으로 이동합니다.
      • 새로운 환경 변수를 추가하기 위해 “Add variable” 버튼을 클릭합니다.
      • 다음과 같이 환경 변수를 설정합니다:
        • Variable name: HUGO_VERSION
        • Value: 0.127.0
  • 빌드 재실행:

    • 환경 변수를 설정한 후, 변경 사항을 저장하고 빌드를 다시 실행합니다.