【问题标题】:Unexpected Token ILLEGAL - response.write() error意外令牌非法 - response.write() 错误
【发布时间】:2012-09-26 13:29:56
【问题描述】:

作为一个类的 node.js 介绍,我使用它来编写一个处理简单登录/注销/用户 ID 系统的 cgi 脚本。但是我遇到了一个问题,因为我尝试使用 response.write() 方法将 HTML 传递给客户端,但我在开始字符串的引号上收到了 Unexpected Token ILLEGAL 错误:

var response = require('HTTP');
login = inputReader('QUERY_STRING');

if (login === "false" || login === "logout") {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(
  " <!doctype html>
    <head>
      <title>Session Makes</title>
      <meta name='Author' content='Sam Judson'>
      <meta name='Contact' content='sjudson@marlboro.org'>
      <link rel='stylesheet' href='SessionMaker.css'>
    </head>
        <body>
          <h1>The way is shut.</h1>
          <form action='' method='put'>
            <input type='text' name='login'>
            <input type='submit' name='login' value='Login'>
            </form>
        </body>
        </html> "
);
};

错误在第 7 行开始的引号处引发。我已经尝试了所有我能做的事情(使用单引号而不是双引号、嵌套引号、删除引号、将字符串放在括号内等),但似乎没有任何效果。奇怪的是,我在网站上看到了许多示例,这些示例与我正在尝试做的事情完全相同,但没有出现此类问题。

【问题讨论】:

  • 为了突出显示而复制和粘贴时出现问题。在 emacs 中,html 是一个完全封装的字符串。不知道是什么原因造成的。

标签: node.js


【解决方案1】:

您的字符串格式似乎有误,在 javascript 中,如果不转义换行符或在行上添加字符串,则无法将字符串继续到新行。

这会抛出一个错误:

  var str = "Starting string
  trying to continue";

使用转义

  var str = "Starting string\
  trying to continue";

使用添加

  var str = "Starting string" +
  "trying to continue";

【讨论】:

  • 问题是,如果我将所有 HTML 放在一行中,它不会有任何区别。可能应该提到我这样做了,它会浮现在脑海中。不过,我确实和我的教授谈过,他认为这是因为它是一个 CGI 脚本,所以我应该只写入标准输出,而不是使用 node.js 的 HTTP 设置。我认为可能是这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多