1

Node.js apps on Firebase Hosting을 본 후 Polymer 및 NodeJs/express 및 firebase 호스팅을 사용하여 프로젝트를 만들려고했습니다.
링크 된 비디오에서 firebase는 기본적으로 static public/index.html 파일을 제공하는 것으로 보여 지므로 정적 public/index.html 파일이 제거되어 동적 파일을 제공합니다. 그러나이 특정 파일은 동일한 함수 디렉터리에 있으며 더 이상 공용 폴더에 저장되지 않습니다.

내 전체 프로젝트를 함수 폴더 또는 앱 시작점에 배치해야합니까? 아래 그림과 같이 공용 폴더에있는 파일을 보낼 수 없습니다.firebase가있는 node.js 배포에서 공용 폴더를 참조 할 수 없습니다.

  • 프로젝트
    • 기능
  • 공공
    • server.js
      • index.html을
    • ,

    app.get('*', (req, res) => { 
        res.sendFile(path.join(__dirname, '/public/index.html')); 
    }) 
    

내가 중포 기지가 다르게 대중과 기능을 폴더를 호스팅하거나 믿습니다 나는 그냥 잘못 참조?

답변

3

당신의 기능에 파일을 참조 할 수 있도록 functions 폴더 안에 당신은 중첩하여 public 폴더에 필요합니다. firebase.jsonpublic 설정을 예를 들어 0으로 변경하면됩니다. functions/public을 입력 한 다음 functions 디렉토리로 이동하십시오.

그러면 설명하는 것처럼 할 수 있습니다.

+0

좋아, 내가 생각했던 것. 나는 이것이 옳은 길인지 또는 내가 놓치고 있는지 확실하지 않았다. 한 가지 얻지 못하는 것은 비디오 끝 부분에서 공용 폴더의 스타일 시트를 함수 폴더에있는 인덱스에 연결하는 것입니다. 왜냐하면 정적 애셋을 별도로 유지하려고하기 때문입니다. – Niklas

+1

일반적으로 Cloud를 사용하면 안됩니다 Firebase Hosting이 기본적으로 제공하는 기능을 복제하는 기능. 따라서 모든 경로에서'index.html'을 제공하려는 경우 [재 작성] (https://firebase.google.com/docs/hosting/url-redirects-rewrites#section-rewrites)을 사용해야합니다. 대신. –

+0

이전에 튜토리얼에 따라 함수 + 퍼블릭 스플릿이 있었는데, res.render()를 호출 할 때 함수 안에 경로가 포함 된 파일이있었습니다. 어떤 경우에는 내 style.css를 대중의 내부에서 올바르게 찾을 수도 있고, 다른 시간에 style.css를 경로와 동일한 디렉토리에서 가져올 수도 있습니다. 왜 어떤 경우에는 작동하지만 다른 곳에서는 작동하지 않습니까? (이것은 별도의 질문일까요?) 미리 감사드립니다! – Jordan