node.js - vue-server-renderer – 尝试插入模板时无效表达式,例如带有标题或元数据

标签 node.js vue.js server-side-rendering

当我尝试使用

编译以下服务器端代码时

vue 2.5.13 Node 9.9.0

我收到“意外 token ”错误。我不知道为什么会这样。我只是想进行推断。不幸的是我无法使用codepen,因为这是服务器端代码。但这个例子很简单,所以应该可以重现。

代码如下:

const Vue = require('vue');
const renderer = require('vue-server-renderer').createRenderer();

let template = `<!DOCTYPE HTML>
<html lang="de" itemscope itemtype="http://schema.org/WebPage">
<head>
  <meta charset="utf-8"/>
  {{{meta}}}
  <title>{{{title}}}</title>
</head>
<body>
  <!--vue-ssr-outlet-->
</body>
</html>`;

let app = new Vue({
  data: {
    meta: '<meta/>',
    title: 'title'
  },
  template: template
}); 

renderer.renderToString(app, (err, html) => {

  if (err) {
    console.error(err);  
  }

  console.log(html);

});

这是我得到的错误:

<!DOCTYPE HTML>
<html lang="de" itemscope itemtype="http://schema.org/WebPage">
<head>
  <meta charset="utf-8"/>
  {{{meta}}}
  <title>{{{title}}}</title>
</head>
<body>
  <!--vue-ssr-outlet-->
</body>
</html>
- invalid expression: Unexpected token ) in

    "\n  "+_s({meta)+"}\n  "

  Raw expression: {{{meta}}}

- invalid expression: Unexpected token ) in

    _s({title)+"}"

  Raw expression: {{{title}}}



(found in <Root>)

at onCompilationError (/path/node_modules/vue-server-renderer/build.js:7378:9)
at compileToFunctions (/path/node_modules/vue-server-renderer/build.js:5536:9)
at normalizeRender (/path/node_modules/vue-server-renderer/build.js:7388:22)
at render (/path/node_modules/vue-server-renderer/build.js:7752:5)
at Object.renderToString (/path/node_modules/vue-server-renderer/build.js:8232:9)
at Object.<anonymous> (/path/playground/vue-render.js:24:10)
at Module._compile (module.js:649:30)
at Object.Module._extensions..js (module.js:660:10)
at Module.load (module.js:561:32)
at tryModuleLoad (module.js:501:12)

最佳答案

查看关于 Template Interpolation 的部分在 SSR 指南中。我认为{{{title}}}在你的代码中应该是 {{title}} (两个而不是三个大括号)因为它只是一个字符串而不是 HTML。

<meta/> 中的正斜杠可能需要转义。

关于node.js - vue-server-renderer – 尝试插入模板时无效表达式,例如带有标题或元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49645757/

相关文章:

next.js - 使用 Next.js 如何在 SSR 期间向 body 或 _next div 添加一个类?

reactjs - 使用 react 和 SSR 增加元素 Id (next.js)

node.js - 在 Windows cmd 中,“nodemon”未被识别为内部命令错误

node.js - 在heroku上部署Nodejs+Express+React+Webpack应用程序

javascript - 使用 React 使用随机生成的字符串进行服务器端渲染?

javascript - 以与 mousedown/mousemove/mouseup 相同的方式处理 touchstart/touchmove/touchend

vue.js - 我们是否有像 router.push(location, onComplete?, onAbort?) 这样的 <router-link> 的 onComplete 和 onAbort 回调?

node.js - 我如何使用 Forever With Express 来保持 NodeJS 服务器的运行?

node.js - 将正文解析复选框表达为数组

node.js - 未找到 Vue 命令