【问题标题】:Using JSHint with Express.js / 'delete' (a reserved word)将 JSHint 与 Express.js / 'delete' 一起使用(保留字)
【发布时间】:2012-07-10 08:24:12
【问题描述】:

我在 Node.js 之上使用 Express.js 来创建 RESTful API,并使用 grunt 来监视我的文件并自动检查我的 JavaScript。

每次我使用删除功能时,它都会被 JSHint 标记:

[L218:C9] Expected an identifier and instead saw 'delete' (a reserved word).
app.delete('/api/users/:userid', function deleteUser(req, res, next) {

我知道'delete' 是一个保留字,但它是由 Express.js 选择的!有没有更好的方法来检查我的 Express.js 应用程序?有什么办法可以关闭这个检查??

【问题讨论】:

  • 快速搜索我相信您可以使用es5 选项。

标签: javascript node.js express jshint gruntjs


【解决方案1】:

解决此问题的另一种方法是使用bracket notation 而不是dot notation

app['delete']('/api/users/:userid', function deleteUser(req, res, next) {
  /* function body */
});

过去,当使用定义了.delete.continue 方法的IndexedDB 时,这种解决方法是必要的。

如今,这种解决方法应该没有必要了。 Ever since ES5 JavaScript 允许属性名称使用保留字。很长一段时间,jsHint 默认假设你的代码是 ES3,但starting with version 2.0.0 它默认假设它是 ES5 并且不会抱怨保留字被用作属性名称。

【讨论】:

    【解决方案2】:

    在 JSHint 1.1.x 中,您可以为 jshint 设置 es5 选项,它允许您根据 ES5 规范使用保留字作为属性。

    从 JSHint 2.0 开始,es5 选项是默认选项,您应该可以使用保留字作为属性。

    欲了解更多信息,您可以前往http://www.jshint.com/docs/#options

    【讨论】:

    • 这已经改变了; as of version 2.0.0,JSHint 去掉了 es5 选项,现在假定代码是 ES5,除非通过新的 es3esnext 选项另有说明。
    【解决方案3】:

    在 Express.js 中,使用 del 而不是 delete

    app.del('/api/users/:userid', function deleteUser(req, res, next)
    

    【讨论】:

    • 不要再使用 del 了! express deprecated app.del:改用 app.delete
    猜你喜欢
    • 2014-06-09
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    相关资源
    最近更新 更多