有什么方法可以强制节点中的严格模式?

时间:2012-01-27 10:27:24

标签: node.js

无法在任何地方找到这个答案,但我确实找到了几个讨论这个问题的邮件列表,但这些列表相当陈旧,我不知道这是否已实现。

无论如何强制在node.js中使用严格模式?

在我的所有.js文件中写"use strict"; ......好吧,我更喜欢它被强制使用严格模式,而不是添加额外的样板文件。

6 个答案:

答案 0 :(得分:195)

根据劳埃德的说法,你现在可以放置

"use strict";

位于节点> = 0.10.7 的文件顶部,但如果您希望整个应用程序严格运行(包括外部模块),则可以这样做

  

node --use_strict

答案 1 :(得分:57)

在节点0.10.7中,您可以通过将"use strict";放在文件顶部来强制执行文件级别的严格模式。终于来了!

答案 2 :(得分:25)

您也可以使用

https://npmjs.org/package/use-strict

即写一次

require('use-strict')

甚至向前迈出一步并使用

https://npmjs.org/package/node-strict

请注意use-strict将在调用后所需的每个模块上更严格地开启。

如果你更喜欢非侵入性的方法,我写了另一个模块

https://www.npmjs.org/package/strict-mode

仅在您的包中启用严格模式。我认为这更像是“我的意思”解决方案。

答案 3 :(得分:18)

您还可以在shebang解释器指令上提供严格标志。

#!/usr/bin/env node --use_strict

但是目前(至少在v0.9.x之前),它遇到了@ chad-scira的回答讨论中所述的相同问题。

答案 4 :(得分:12)

只需在适用文件的顶部使用"use strict";。我知道尝试删除样板很诱人,但是用Javascript根本无法做到。节点标志,不应命名为 [1]

  • 没有文档记录,Node本身也不支持。
  • 已面对proposals to remove it.
  • 是特定于节点的,任何其他JavaScript引擎均不支持。
  • 未标准化。
  • 它与"use strict"; 不同,因为它是全局编译器,并且像所有全局变量一样,您可能会对其他人的代码产生不利影响。
  • 所有内容都存在错误。严格模式和草率模式可能会遇到不同的错误。也就是说,一些strict mode bugs are unique to strict mode

其他一些程序员可能认为这类似于-wALL之类的,但事实并非如此。这是标准化功能,您可以通过临时方式启用(违反标准)并更改每个人的编译器语义。

脚语

  1. 节点标志为--use_strict请勿使用

答案 5 :(得分:1)

值得注意的是,ESLint 默认强制执行严格模式。当然,它不会阻止您在不遵守严格模式的文件上运行 node,但是如果您将 ESLint 作为构建和 CI 过程的必需部分,那么开发人员将只能提交严格模式代码。