首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在SSR上呈现Vue应用程序

无法在SSR上呈现Vue应用程序
EN

Stack Overflow用户
提问于 2018-05-18 18:01:44
回答 3查看 1.5K关注 0票数 2

我一直在遵循这个指导原则来学习如何创建SSR Vue App。https://ssr.vuejs.org/

下面是我的npm脚本

代码语言:javascript
复制
"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,错误如下:

代码语言:javascript
复制
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)

bootstrap:文档未在新的Promise ()处定义。(匿名function).Promise.then.installedCssChunks.(anonymous函数)(webpack/ ReferenceError: 52:0)

但是,如果我将NODE_ENV=development更改为服务器捆绑包构建,这是可以的。

我把我所有的代码都推到了这里:https://github.com/hoanguyen311/vue-ssr

EN

回答 3

Stack Overflow用户

发布于 2018-09-21 13:16:43

我使用jsDom,它可以正常工作。文档未在节点环境中定义。代码如下:

代码语言:javascript
复制
    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里。

票数 3
EN

Stack Overflow用户

发布于 2018-09-27 15:05:47

我遇到了和你完全一样的错误,在vue-router中有问题,然后我想是因为在node环境中没有文档或窗口,所以我尝试使用jsdom,它起作用了,没有像文档不再定义的错误,但我仍然无法在生产环境中看到我的页面。所以我试着找出我的路由器出了什么问题。事实证明,我不应该使用ssr.vuejs.org推荐的延迟加载,所以下面是我所做的,我的项目现在运行得很好。

票数 0
EN

Stack Overflow用户

发布于 2020-05-21 04:10:22

出现此错误是因为在您的webpack产品内部版本中使用了ExtractTextPlugin

代码语言:javascript
复制
{
  test: /\.scss$/,
  use: isProd
  ? [ExtractTextPlugin.loader, 'css-loader', 'sass-loader']
  : ['vue-style-loader', 'css-loader', 'sass-loader']
},

和你的Foo.vue文件中的模板内样式。

代码语言:javascript
复制
// Foo.vue
<style lang="scss" scoped>
  h1 {
    color: #FFF;
    background: brown;
  }
</style>

我也遇到过同样的问题,我花了几天的时间让它在我们的webpack设置中正常工作。但是我失败了,成功了:p。现在我们已经将我们所有的模板内样式移到了.css/.scss文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50408760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档