Javascript 未捕获的SyntaxError:意外标记非法的多字符串

Javascript 未捕获的SyntaxError:意外标记非法的多字符串,javascript,node.js,markdown,Javascript,Node.js,Markdown,首先:我知道有超过百篇文章/问题与这篇文章或类似,但让我解释一下我试图实现的目标和我的问题是什么 我有一个降价编辑器,我将存储用户的内容,如果他们希望以后可以编辑该内容 因此,在我的例子中,我使用elasticsearch将所有用户的内容存储在那里 存储信息对我来说根本不是问题,但必须检索和重新显示信息是一个巨大的问题,我现在正努力解决这个问题好几个小时了 有了这个标记编辑器,用户可以输入一些没有任何限制的内容,我不确定这是否是我的标记编辑器错误处理所有这些内容的方式,但是换行符在这里是一个巨

首先:我知道有超过百篇文章/问题与这篇文章或类似,但让我解释一下我试图实现的目标和我的问题是什么

我有一个降价编辑器,我将存储用户的内容,如果他们希望以后可以编辑该内容

因此,在我的例子中,我使用
elasticsearch
将所有用户的内容存储在那里

存储信息对我来说根本不是问题,但必须检索和重新显示信息是一个巨大的问题,我现在正努力解决这个问题好几个小时了


有了这个标记编辑器,用户可以输入一些没有任何限制的内容,我不确定这是否是我的标记编辑器错误处理所有这些内容的方式,但是换行符在这里是一个巨大的问题

如果用户输入类似的内容

#Hello World

#Here you see I have two extra lines

#How about a video element here as well?


<iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe>

#Damn cool!!
var your_content = '    #Hello World
    
    #Here you see I have two extra lines

    #How about a video element here as well?


    <iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe>
    
    #Damn cool!!
';
var replaced_text = your_content.replace(/\n|\s/g, "");
幸运的是,我可以使用我之前在这里提出的问题中的某些内容来修复此问题,但一个问题修复了另一个问题

解决这个问题的办法就是这样做

#Hello World

#Here you see I have two extra lines

#How about a video element here as well?


<iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe>

#Damn cool!!
var your_content = '    #Hello World
    
    #Here you see I have two extra lines

    #How about a video element here as well?


    <iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe>
    
    #Damn cool!!
';
var replaced_text = your_content.replace(/\n|\s/g, "");
var your_content='#你好,世界
#你看,我还有两行
#这里还有视频元素吗?
#太酷了!!
';
var replaced_text=您的_内容。replace(/\n |\s/g,“”);
但使用上述解决方案,所有内容都将如下所示:

#Hello World #Here you see I have two extra lines #How about a video element here as well? <iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe> #Damn cool!
#你好,世界#这里你看我还有两行#这里还有一个视频元素怎么样#太酷了!
因此,代码的格式真的很混乱,这是另一个问题,因为用户显然希望能够编辑他们的代码并使用良好的格式

我正在使用这个降价编辑器

我的服务器是:Nodejs,所以我使用的所有东西都是JavaScript

更新 这是代码的截取部分:

  var editor
    , converter
    , autoInterval
    , paperImgPath = '/img/notebook_paper_200x200.gif'
    , profile = 
      {
        theme: 'ace/theme/idle_fingers'
      , showPaper: false
      , currentMd: '{{contentMd}}' <---- this is the problem
      , autosave: 
        {
          enabled: true
        , interval: 3000 // might be too aggressive; don't want to block UI for large saves.
        }
      , current_filename : 'Filename'
      }
var编辑器
,转换器
,自动间隔
,paperImgPath='/img/notebook\u paper\u 200x200.gif'
,档案=
{
主题:“王牌/主题/空闲手指”
,展示纸:假

,currentMd:“{{contentMd}}”我想这就是发生的情况:

> var s = 'long string
with carriage return';
SyntaxError: Unexpected token ILLEGAL
这是来自Chrome的控制台窗口

在将字符串粘贴到javascript之前,请尝试将服务器上的所有
\n
字符替换为
'\n'

> var s = 'long string\nwith carriage return';
undefined
> s
"long string
with carriage return"

导致异常的JS代码在哪里?将字符串存储在变量中不应导致语法错误,除非您正在构造JS对象并调用eval或其他…@tjameson将在几秒钟内更新代码片段。@tjameson我已更新了我的问题;我不相信您所说的。:)您的
替换了\u text
所有的
\n
\s
都被删除了。当然格式受到了影响。我建议,不是删除
\n
,而是用literal
'\n'
替换它们。比如
var contentMd=your_content.replace(/\n/g,\\n');
它适用于上述问题,所以我不得不接受你的答案:)(尽管之后我发现了另一个问题:()像这样的问题很容易看到。只需在浏览器中打开生成的Javascript源代码,您就会看到无效语法(带引号的字符串中的换行符)。