Любой способ заставить строгий режим в 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 (нарушая стандарт) и изменяя каждую семантику компилятора.
Сноски
- Флаг узла -
--use_strict
. Не используйте его.