[英]Confused about 'use strict' in JavaScript/nodejs
当我在代码中添加一个linter时,我注意到关于'use strict';
的很多错误'use strict';
所以我将这一行添加到很多文件中。 但是,这在我的主要app.js
文件中破坏了一些代码,如下所示:
'use strict';
var express = require('express');
var timeout = require('connect-timeout');
//var logger = require('morgan');
var requireDir = require('require-dir');
var app = express();
// Load all the routes in the routes file into app middleware
// This assumes that the route exports an express.Router() object
var routes = requireDir('./routes');
for (var i in routes) app.use('/', routes[i]);
// Set the timeout
app.use(timeout('5s'));
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = 'ERROR: Invalid request to the server';
err.status = 404;
next(err);
});
if (!module.parent) {
app.listen(3000);
console.log('engine-map-service opend on port 3000');
}
它返回以下error
堆栈:
TypeError: Cannot assign to read only property 'status' of ERROR: Invalid request to the server
at /usr/src/app/app.js:21:14
at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:312:13)
at /usr/src/app/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:330:12)
at next (/usr/src/app/node_modules/express/lib/router/index.js:271:10)
at /usr/src/app/node_modules/connect-timeout/index.js:64:5
at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:312:13)
at /usr/src/app/node_modules/express/lib/router/index.js:280:7
use strict
到底是什么? 我已经阅读了几篇文章,但是关于如何改变开发人员的行为以及何时应该或不应该使用它,我没有深入了解。 我发现有不止一篇文章建议use strict
开始每个js
文件,但显然有些情况我不见了。
在Java中,“严格使用”的用途广泛涉及use strict
的用法, 其背后的原因是什么? 。
在您的特定情况下,它捕获的TypeError
除非在运行时发生某种条件,否则否则不会抛出该错误。
在错误处理程序中,您将创建一个名为err
的字符串,然后尝试为其分配属性。 您不能将属性分配给字符串。
如果要创建同时包含消息和状态的错误对象,则可以执行以下操作:
app.use(function(req, res, next) {
var err = {
message: 'ERROR: Invalid request to the server',
status: 404
};
next(err);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.