SyntaxError Rendering Server dengan React/Redux/Express

Saya mencoba membuat aplikasi saya dirender dari server dan mencoba mengimplementasikan contoh ServerRendering dari sini: http://redux.js.org/docs/recipes/ServerRendering.html

Saya berhasil menjalankan server.js tetapi saya mendapatkan kesalahan "Uncaught SyntaxError: Unexpected token ‹" @ bundle.js:2 setelah saya memuat localhost. Saya yakin ini ada hubungannya dengan fungsi renderFullPage():

function renderFullPage(html, initialState) {
  return `
    <!doctype html>
    <html>
      <head>
        <title>Redux Universal Example</title>
      </head>
      <body>
        <div id="root">${html}</div>
        <script>
          window.__INITIAL_STATE__ = ${JSON.stringify(initialState)}
        </script>
        <script src="/dist/bundle.js"></script>
      </body>
    </html>
    `
}

Jika saya menghapus baris <script src="/dist/bundle.js"></script> kesalahannya hilang, tetapi penghitungnya tidak berfungsi.

Inilah bundle.js yang menjadi referensi kesalahan:

bundle.js

Seharusnya merujuk pada bundle.js di folder dist saya tetapi bukan karena alasan tertentu? Jika saya membuat file index.html persis sama dengan yang dikembalikan renderFullPage, kecuali menghilangkan ${html} dan <script> window.__INITIAL_STATE__ = ${JSON.stringify(initialState)} </script>

maka penghitung berfungsi dengan baik. Ketika saya melakukan rendering sisi server sepertinya klien tidak dapat menemukan kode bundle.js jadi buatlah kode yang memiliki kode yang sama persis dengan yang diterimanya dari server, sehingga ada kesalahan saat dijalankan ke html ketika itu mengharapkan javascript.


person Data_Crusader    schedule 29.03.2016    source sumber
comment
Jika saya menghapus garis, kesalahannya hilang, tetapi penghitungnya tidak berfungsi. Baris mana yang kamu bicarakan?   -  person David    schedule 29.03.2016
comment
‹script src=/dist/bundle.js›‹/script›, menurut saya masalahnya adalah klien tidak mengambil file /dist/bundle.js yang merupakan file keluaran webpack saya.   -  person Data_Crusader    schedule 29.03.2016
comment
huh... itu tidak muncul untukku sebelumnya... maaf   -  person David    schedule 29.03.2016
comment
Ya lupa pas pertama kali submit, masukin setelahnya.   -  person Data_Crusader    schedule 29.03.2016
comment
I can successfully run server.js Saya tidak setuju, Anda mungkin dapat mendengarkan di suatu port, tetapi begitu Anda menggunakan server.js untuk suatu permintaan, permintaan itu gagal. Apakah Anda menulis ES6 atau ES5?   -  person lux    schedule 30.03.2016


Jawaban (1)


Itu karena bundle.js Anda berisi HTML, bukan skrip sisi klien. Apakah Anda menggunakan rute umum dan tidak membiarkannya memuat aset statis Anda? Panggilan express.static middleware use Anda harus dilakukan sebelum sedikit kode ini (urutan middleware penting).

person Steven    schedule 29.03.2016