未捕获的SyntaxError:意外的令牌ILLEGAL多个字符串

时间:2013-07-06 04:08:14

标签: javascript node.js markdown

首先:我知道有相同的标题或类似于这个的文章/问题,但让我解释一下我想要达到的目标,这里有什么问题

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

因此,在我的情况下,我使用elasticsearch将所有用户的内容存储在那里。

存储信息对我来说根本不是问题,但是必须检索它并重新显示是一个很大的问题,我现在正试图解决这个问题很长时间。


使用这个Markdown编辑器,用户可以输入一些没有任何限制的东西,我不确定这是否是我的Markdown编辑器错误地处理所有这些东西的方式,但这里的换行是一个很大的问题。 / p>

如果用户输入类似

的内容
#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!!

存储它显然没问题,但是当必须在editor

上重新显示时

我收到了这个错误。

Uncaught SyntaxError: Unexpected token ILLEGAL

幸运的是,我可以使用我先前在此问过的问题解决这个问题,但是一个问题解决了另一个问题。

问题的解决方法是做这样的事情

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!

因此,代码的格式化确实搞砸了,这是另一个问题,因为用户显然希望能够编辑他们的代码并使用良好的格式。

我正在使用这个Markdown编辑器http://dillinger.io

我的服务器是: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'
      }

我存储{{contentMd}}的地方并不重要我仍然会收到错误。如果我像这样存储它们

var abcd ='{{contentMd}}';

所以contentMd它是从服务器传递的内容,它包含我在顶部发布的所有内容。

1 个答案:

答案 0 :(得分:2)

我认为这是发生的事情:

> 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"