Любой способ заставить строгий режим в узле?
Нигде не смог найти этот ответ, но я нашел несколько списков рассылки, где это обсуждалось, однако они довольно старые, и я понятия не имею, реализовано это или нет.
Есть ли способ принудительно использовать строгий режим в node.js?
Пишу "use strict";
во всех моих файлах.js... я предпочитаю использовать строгий режим, а не добавлять дополнительные шаблоны.
7 ответов
По словам Ллойда, теперь вы можете разместить
"use strict";
вверху вашего файла в node> = 0.10.7, но если вы хотите, чтобы все ваше приложение работало в строгом режиме (включая внешние модули), вы можете сделать это
узел --use_strict
В узле 0.10.7 вы можете применить строгий режим на уровне файлов, поместив "use strict";
в верхней части вашего файла. В заключение!
Просто используйте "use strict";
в верхней части применимых файлов. Я знаю, что заманчиво попытаться вырезать шаблон, но это просто невозможно сделать в Javascript. Флаг узла, который не должен быть назван[1]
- не документирован и не поддерживается самим Узлом.
- столкнулся с предложениями по его удалению.
- специфичен для узла и не поддерживается ни в одном другом движке JavaScript.
- является нестандартным.
- это не то же самое, что
"use strict";
потому что это глобальный компилятор, и, как и все глобальные, вы потенциально отрицательно влияете на чужой код. - все подвержено ошибкам. строгий режим и неаккуратный режим могут быть подвержены различным ошибкам. то есть некоторые ошибки строгого режима уникальны для строгого режима
Некоторые другие программисты могут подумать, что это похоже на -wALL
или тому подобное, это не так. Это стандартизированная функциональность, которую вы включаете специальным образом (нарушая стандарт) и меняя семантику компилятора каждого.
Сноски
- Флаг узла
--use_strict
, Не используйте это.
Вы также можете использовать
https://npmjs.org/package/use-strict
то есть напиши один раз
require('use-strict')
или даже сделать шаг вперед и использовать
https://npmjs.org/package/node-strict
Обратите внимание, что use-strict
включит строгое больше для каждого модуля, необходимого после вызова.
Если вы предпочитаете неинвазивный подход, я написал другой модуль
https://www.npmjs.org/package/strict-mode
который включает строгий режим только в вашем пакете. Я думаю, что это скорее решение "Делай, что я имею в виду".
Вы также можете указать строгий флаг в директиве интерпретатора shebang.
#!/usr/bin/env node --use_strict
Но в настоящее время (по крайней мере, до v0.9.x) он испытывает те же проблемы, что описаны в комментариях в обсуждении ответа @chad-scira.
Если вы используете CommonJS (NodeJS по умолчанию использует модульность CommonJS), строгого режима не будет, если вы не включите"use strict"
в файле или узле выполнения с помощью--use_strict
флаг
Но в модулях ECMAScript по умолчанию установлен строгий режим. Вы можете включить его, добавив"type": "module"
в package.json
Стоит отметить, что ESLint по умолчанию применяет строгий режим. Это не помешает вам бежать
node
в файле, который, конечно, не соответствует строгому режиму, но если у вас есть ESLint в качестве обязательной части процесса сборки и CI, то разработчики смогут фиксировать код только в строгом режиме.