Любой способ заставить строгий режим в node?

Не удалось найти этот ответ в любом месте, но я нашел несколько списков рассылки, где это обсуждалось, но они довольно старые, и я понятия не имею, реализовано это или нет.

Есть ли способ принудительно использовать строгий режим в node.js?

Написание "use strict"; во всех моих .js файлах... ну, я предпочитаю, чтобы он был вынужден использовать строгий режим, вместо добавления дополнительного шаблона.

Ответ 1

Согласно Ллойду, теперь вы можете разместить

"use strict";

в верхней части вашего файла в node >= 0.10.7, но если вы хотите, чтобы все ваше приложение работало строго (, включая внешние модули), вы может сделать это

node --use_strict

Ответ 2

В node 0.10.7 вы можете принудительно ввести строгий режим на уровне файла, разместив "use strict"; в верхней части файла. Наконец-то!

Ответ 3

Вы также можете использовать

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

то есть написать один раз

require('use-strict')

или даже сделайте шаг вперед и используйте

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

Обратите внимание, что use-strict будет включать строгую строчку на каждый модуль, необходимый после вызова.

Если вы предпочитаете неинвазивный подход, я написал еще один модуль

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

который обеспечивает строгий режим только в вашем пакете. Я думаю, что это скорее решение "Что я имею в виду".

Ответ 4

Вы также можете указать строгий флаг в директиве интерпретатора shebang.

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

Но в настоящее время (по крайней мере, pre v0.9.x) он испытывает те же проблемы, которые описаны в комментариях в обсуждении @chad-scira.

Ответ 5

Просто используйте "use strict"; в верхней части соответствующих файлов. Я знаю, что это соблазн попытаться вырезать шаблон, но это просто невозможно сделать в Javascript. Флаг узла, который не должен называться [1]

  • недокументирован и не поддерживается самим узлом.
  • сталкивается с предложениями по его устранению.
  • специфичен для узла и не поддерживается в любом другом движке JavaScript.
  • нестандартно.
  • это не то же самое, что "use strict"; потому что это компилятор глобальный, и, как и все глобальные переменные, вы потенциально негативно влияете на код другого пользователя.
  • все подвержено ошибкам. строгий режим и режим sloppy могут подвергаться различным ошибкам. то есть некоторые строгие ошибки режима уникальны для строгого режима

Некоторые другие программисты могут подумать, что это похоже на -wALL или тому подобное, это не так. Это стандартизованная функциональность, которую вы разрешаете ad-hoc (нарушая стандарт) и изменяя каждую семантику компилятора.

Сноски

  1. Флаг узла - --use_strict. Не используйте его.