ExpressJS SyntaxError:意外的令牌 C

Posted

技术标签:

【中文标题】ExpressJS SyntaxError:意外的令牌 C【英文标题】:ExpressJS SyntaxError: Unexpected token C 【发布时间】:2015-03-23 00:06:16 【问题描述】:

我正在尝试将我的字符串保存到逗号分隔的数组中,但是当我尝试使用 JSON.parse 方法时,我在发送 post 方法并尝试保存记录时收到此错误:

SyntaxError: Unexpected token c
   at Object.parse (native)
   at router.route.post.get.res.render.blogpost (/Users/user/Desktop/Projects/node/blog/app/routes.js:106:34)

这是我的路线(blogpost.save 出现错误):

router.route('/admin/posts/create')

    // START POST method
        .post(function(req, res) 

            console.log("New instance");

            var blogpost = new Blogpost(); // create a new instance of a Blogpost model

            blogpost.title = req.body.title; // set the blog title
            blogpost.featureImage = req.body.featureImage; // set the blog image
            blogpost.blogUrl = blogpost.title.toLowerCase().replace(/\s+/g,"-");
            blogpost.author = req.body.author; // set the author name
            blogpost.tagline = req.body.tagline; // set the tagline
            blogpost.content = req.body.content; // set the blog content
            blogpost.category = req.body.category; // set the category
            blogpost.tags = JSON.parse(req.body.tags.split(",")); // set the tags
                //Save Blog Post
                blogpost.save(function(err) 
                    if (err)
                        res.send(err);

                    res.redirect(303, '/'); //NEEDS TO BE CHANGED
                );

        ) // END POST method


        .get(isLoggedIn, function(req, res, blogpost) 
            res.render('pages/blogpost-create', 
              blogpost : blogpost
            );
        );

【问题讨论】:

【参考方案1】:

JSON.parse 将字符串(有效 JSON)解析为对象/数组。

你已经有了一个数组,就像你正在做的那样

req.body.tags.split(",")

split() 创建一个数组。你不能解析一个数组,但你可以把它字符串化

【讨论】:

嘿@adeneo 感谢您到目前为止的帮助,我使用 split 方法留下了它,但我注意到我的值显示为单个字符而不是单词的链接。这与我保存值的方式有关吗? <% for(var i=0; i<blogpost.tags.length; i++) %> <a href="/tag/<%= blogpost.tags[i] %>"><%= blogpost.tags[i] %></a> <% %> @cphill - 我不知道?现在看起来您正在使用 EJS 或其他东西,您可能应该就此提出一个新问题,但是如果您正在获取单个字符,那么您正在迭代一个字符串,而不是一个数组,如果您这样做是有意义的删除了split(),也许你应该删除外部的JSON.parse,只保留数组

以上是关于ExpressJS SyntaxError:意外的令牌 C的主要内容,如果未能解决你的问题,请参考以下文章

SyntaxError:意外的令牌“返回”

SyntaxError:“获取”的意外标识符

SyntaxError:意外的令牌不断弹出[重复]

SyntaxError:意外的标识符导入反应(Javascript)[重复]

SyntaxError:意外的标记静态

“无法重新声明块范围的变量”和“SyntaxError:意外的令牌'导出'”[关闭]