在定义之前使用'require'

Kev*_*vin 5 javascript node.js

我开始研究Node.js. 我购买了Marc Wandscheider编写的手册.我下载了使用它的工具,我也下载了Brackets.

我正在尝试一个示例脚本,但是我得到了两个不理解的错误,并且指南中没有这些错误.

第一个错误告诉我:

在定义之前使用'require'

C:\node> node debug web.js
<Debugger listening on port 5858>
connecting ... ok
break in C:\node\web.js: 1
   1 var http = require ("http");
   2
   3 process_request function (req, res) {
debug>
Run Code Online (Sandbox Code Playgroud)

而第二个(在括号中):

缺少使用严格声明

我在互联网上看到我可以添加该行

"use strict";
Run Code Online (Sandbox Code Playgroud)

但指南没有使用它 - 它是否需要?

我该如何解决这些问题?

整个代码

var http = require("http");

function process_request(req, res) {

    var body = 'Thanks for calling!';
    var content_length = body.length;
        res.writeHead(200, {
            'Content-Length': content_length,
            'Content-Type': 'text/plain'
        });
    res.end(body);
}

var s = http.createServer(process_request);
s.listen(8080);
Run Code Online (Sandbox Code Playgroud)

pdj*_*ota 6

这些错误实际上是JSHINT流程验证优秀代码的建议.Brackets可能正在幕后使用它.如果您告诉jshint您正在为节点编写,那么require将成为一个全局变量,因此它不会给出该错误.尝试运行了一些警告,该代码JSHINT一些文章用适当的解释使用JSHINT

/*jshint node:true */
'use strict';
var http = require('http');

function process_request(req, res) {

    var body = 'Thanks for calling!';
    var content_length = body.length;
        res.writeHead(200, {
            'Content-Length': content_length,
            'Content-Type': 'text/plain'
        });
    res.end(body);
}

var s = http.createServer(process_request);
s.listen(8080);
Run Code Online (Sandbox Code Playgroud)

  • 为了解决这个问题,我不得不使用jslint代替jshint. (4认同)
  • 使用`/*jslint节点:true*/`如果是JSLint,如@Brideau所指出的那样 (2认同)