Не удалось отобразить приложение Vue в SSR - PullRequest
0 голосов
/ 18 мая 2018

Я следовал этому руководству, чтобы узнать о создании приложения SSR Vue.https://ssr.vuejs.org/

вот мои npm-скрипты

"clean": "rimraf ./dist",
"start": "node .",
"build:client": "NODE_ENV=production webpack --config webpack/client.js --progress --hide-modules",
"build:server": "NODE_ENV=production webpack --config webpack/server.js --progress --hide-modules",
"build": "yarn clean; yarn build:client; yarn build:server"

Ошибка при запуске "npm run build; npm run start".

Вот ошибка, если я посещаюlocalhost: 8000 в моем браузере:

ReferenceError: document is not defined
at promises.push.installedCssChunks.(anonymous function).Promise.then.installedCssChunks.(anonymous function) (webpack/bootstrap:52:0)
at new Promise (<anonymous>)
at Function.requireEnsure [as e] (webpack/bootstrap:49:0)
at component (src/router.js:10:36)
at /Users/admin.hoa.nguyen/Demos/vue-ssr/node_modules/vue-router/dist/vue-router.common.js:1778:17
at /Users/admin.hoa.nguyen/Demos/vue-ssr/node_modules/vue-router/dist/vue-router.common.js:1805:66
at Array.map (<anonymous>)
at /Users/admin.hoa.nguyen/Demos/vue-ssr/node_modules/vue-router/dist/vue-router.common.js:1805:38
at Array.map (<anonymous>)
at flatMapComponents (/Users/admin.hoa.nguyen/Demos/vue-ssr/node_modules/vue-router/dist/vue-router.common.js:1804:26)

ReferenceError: документ не определен в promises.push.installedCssChunks. (анонимная функция) .Promise.then.installedCssChunks. (анонимная функция) (webpack / bootstrap: 52: 0) в новом Promise ()

Но если я изменю NODE_ENV = разработку для сборки серверного пакета, это нормально.

Я поместил весь свой код здесь: https://github.com/hoanguyen311/vue-ssr

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Я встретил точно такую ​​же ошибку, как и у вас, что-то не так в vue-router, затем я подумал, что это потому, что в среде узлов нет документа или окна, поэтому я попытался использовать jsdom, и это сработало, такой ошибки нетдокумент больше не определен, но я все еще не вижу свою страницу в производственной среде.поэтому я попытался выяснить, что не так на моем маршрутизаторе.оказалось, что я не должен использовать ленивую загрузку, которая рекомендована ssr.vuejs.org, так что вот что я сделал, и мой проект сейчас работает хорошо.

image

0 голосов
/ 21 сентября 2018

Я использую jsDom , и это работает.документ не определен в среде узла.вот код:

    const { JSDOM } = require('jsdom'); // document undefined
    const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { 'url': 'http://localhost:9528' });
    if (typeof window === 'undefined') {
      global.window = dom.window;
      global.document = window.document;
      global.navigator = window.navigator;
    }

Я положил их в server.js .

...