我开始研究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>
而第二个(在Brackets中):
缺少使用严格声明
我在互联网上看到我可以添加行
"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);
答案 0 :(得分:6)
这些错误实际上是JSHINT流程验证优秀代码的建议。 Brackets可能正在幕后使用它。 如果您告诉jshint您正在为节点编写,那么 require 将成为全局变量,因此它不会给出该错误。 尝试运行此代码,并在JSHINT某些文章中添加一些警告on using 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);
答案 1 :(得分:2)
我在编写gulp文件时遇到了来自Brackets的JSLint窗口的类似警告。这就是我解决它们的方法:
Problems × 1 'require' was used before it was defined.
require函数在别处定义,特别是作为Node.js的一部分定义,因此要解决警告,请在JavaScript文件的顶部将其标记为全局:
/* global require */
请参阅http://jslinterrors.com/a-was-used-before-it-was-defined
Missing 'use strict' statement
我通过使用立即调用的函数表达式解决了这个问题:
(function () {
"use strict";
// The rest of the code
}());
请参阅http://jslinterrors.com/move-the-invocation-into-the-parens-that-contain-the-function
Combine this with the previous 'var' statement
这个很简单。而不是
var body = 'Thanks for calling!';
var content_length = body.length;
使用
var body = 'Thanks for calling!',
content_length = body.length;