将Cookie的值设置为模板文字?

时间:2016-10-31 09:57:14

标签: javascript node.js cookies ecmascript-6 template-literals

我正在创建一个模板文字:

const someVar = 'hello'    

const str = `
  Some random
  multiline string with string interpolation: ${someVar}
`

然后在我的Koa应用程序中,我正在做:

this.cookies.set('str', str)

显然它不喜欢多行字符串,因为它会出现此错误:

  

TypeError:参数值无效

这有什么办法吗?在我的情况下,保持空白格式非常必要。

1 个答案:

答案 0 :(得分:2)

这与模板文字无关;当您收到错误时,您会看到一个包含换行符的字符串。您无法在Cookie值中添加换行符。

保留这些换行符最好的方法是使用JSON:

this.cookies.set('str', JSON.stringify(str));

当然,您在使用它时需要JSON.parse

当然,您不必使用JSON;你可以使用URI编码:

this.cookies.set('str', encodeURIComponent(str));

...然后使用decodeURIComponent(或者使用字符串的等价物)对其进行解码。