Any way to force strict mode in node?

后端 未结 5 1805
故里飘歌
故里飘歌 2020-11-28 21:16

Could not find this answer anywhere, but I did find several mailing lists where this was discussed, these are rather old however and I have no idea if this is implemented or

相关标签:
5条回答
  • 2020-11-28 21:37

    You can also provide the strict flag on the shebang interpreter directive.

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

    But currently (at least pre v0.9.x) it suffers the same problems described by the comments in @chad-scira's answer discuss.

    0 讨论(0)
  • 2020-11-28 21:39

    You can also use

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

    that is, write once

    require('use-strict')
    

    or even take a step forward and use

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

    Please note that use-strict will turn on strict more on every module required after invocation.

    If you prefer a not invasive approach, I wrote another module

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

    which enables strict mode only in your package. I think that is more a "Do What I Mean" solution.

    0 讨论(0)
  • 2020-11-28 21:44

    In node 0.10.7 you can enforce strict mode at file level by placing "use strict"; at the top of your file. Finally!

    0 讨论(0)
  • 2020-11-28 21:54

    According to Lloyd you can now place

    "use strict";
    

    at the top of your file in node >= 0.10.7, but if you want your whole app to run in strict (including external modules) you can do this

    node --use_strict

    0 讨论(0)
  • 2020-11-28 21:54

    Just use "use strict"; at the top of applicable files. I know it's tempting to try to cut out boilerplate, but it simply can not be done in Javascript. The node flag which shall not be named[1]

    • is undocumented, and unsupported by Node itself.
    • has faced proposals to remove it.
    • is node-specific and is not supported in any other JavaScript engine.
    • is unstandardized.
    • it is not the same as "use strict"; because it is a compiler global, and like all globals you're potentially adversely impacting someone else's code.
    • everything is subject to bugs. strict mode and sloppy-mode may be subject to different bugs. that is to say, some strict mode bugs are unique to strict mode

    Some other programmers may think this is similar to -wALL or the like, it's not. This is standardized functionality that you're enabling in an ad-hoc fashion (breaking the standard) and changing everyone's compiler semantics.

    Footnotes

    1. The node flag is --use_strict. Don't use it.
    0 讨论(0)
提交回复
热议问题