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

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

Есть ли способ принудительно использовать строгий режим в 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 или тому подобное, это не так. Это стандартизированная функциональность, которую вы включаете специальным образом (нарушая стандарт) и меняя семантику компилятора каждого.

Сноски

  1. Флаг узла --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, то разработчики смогут фиксировать код только в строгом режиме.

Другие вопросы по тегам