Я работаю с node.js, и в одном из моих файлов JS я использую const
в "strict mode"
. При попытке запустить я получаю сообщение об ошибке:
SyntaxError: Use of const in strict mode.
Как лучше всего это делать?
Редактировать:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
javascript
node.js
Вивек П
источник
источник
var
. Добавить семиколон'use strict';
Ответы:
const
Иlet
являются частью ECMAScript 2015 (он же ES6 и гармонии), и не была включена по умолчанию в Node.js 0,10 или 0,12. Начиная с Node.js 4.x, «все функции доставки [ES2015], которые V8 считает стабильными, по умолчанию включены в Node.js и НЕ требуют какого-либо флага времени выполнения». Документация по Node.js содержит обзор того, какие функции ES2015 включены по умолчанию и кому требуется флаг времени выполнения . Поэтому при обновлении до Node.js 4.x или новее ошибка должна исчезнуть.Включить некоторые функции ECMAScript 2015 (включая
const
иlet
) в Node.js 0.10 и 0.12; запустите программу вашего узла с флагом гармонии, в противном случае вы получите синтаксическую ошибку. Например:Все зависит от того, на чьей стороне находится ваш строгий JS. Я бы порекомендовал использовать строгий режим с
const
объявлениями на стороне вашего сервера и запускать сервер с флагом гармонии. Для клиентской стороны вы должны использовать Babel или аналогичный инструмент для преобразования ES2015 в ES5, поскольку не все клиентские браузеры поддерживаютconst
объявления.источник
'use strict';
себя, но пусть сторонний код решает сам.Если это происходит в nodejs, это происходит из-за более старой версии nodejs. Обновить узел с помощью,
1) Очистить кэш NPM:
2) Установите маленький помощник под названием 'n'
3) Установите последнюю стабильную версию NodeJS
Обновите инструкции nodejs, взятые с https://stackoverflow.com/a/19584407/698072
источник
node
варианта использования, вы можете указать более безопасную версию. Например, на момент написания этой статьи,sudo n 6.9.4
будет установлена последняя версия LTS, гдеsudo n stable
будет установлена7.4.0
. Очевидно, это серьезное изменение, так что будьте осторожныn stable
. Как вариант,sudo n lts
устанавливается самая последняя версия LTS.Обычно эта ошибка возникает, когда версия узла, для которого выполняется код, старше, чем ожидалось. (т.е. 0,12 или старше).
если вы используете nvm, убедитесь, что у вас правильная версия используемого узла. Вы можете проверить совместимость на node.green для const в строгом режиме.
Я нашел похожую проблему в другом посте и опубликовал свой ответ там подробно
источник
/usr/bin/node
папку, в которой было 0.10.46.Один важный шаг после обновления вашего узла - связать двоичный файл вашего узла с последней установленной версией узла.
источник
which node
node --version
распечатывает номер версии, напримерv0.10.29
Это, вероятно, не решение для всех, но это было для меня.
Если вы используете NVM, возможно, вы не включили правильную версию узла для кода, который вы запускаете. После перезагрузки версия вашего узла по умолчанию изменится на системную по умолчанию.
Работал с этим при работе с Reaction-native, который работал нормально. Просто используйте nvm, чтобы использовать правильную версию узла для решения этой проблемы.
источник
nvm use version-number-you-need
это все, что вам нужно сделать.Со времени, когда был задан вопрос, черновик для
const
ключевого слова уже является стандартом жизни в рамках ECMAScript 2015 . Также текущая версия Node.js поддерживает объявления const без--harmony
флага.С учетом вышесказанного вы можете теперь запустить
node app.js
, сapp.js
:получить как синтаксический сахар, так и преимущества строгого режима.
источник
MB
- это степень десяти, а мегабайт - это степеньMiB
двух. т.е.1MB = 1e6
и1MiB = 1024 * 1024
. Смотрите википедию: MebibyteУ меня недавно была похожая проблема, и я попал в вопросы и ответы. Это не решение, которое ищет ОП, но может помочь другим с подобной проблемой.
Я использую PM2 для запуска проекта, и на данном промежуточном сервере у меня была действительно старая версия Node, NPM и PM2. Я обновил все, но сохранил ту же ошибку:
Я пытался остановить и запустить приложение несколько раз. Также попытался обновить все снова. Ничего не получалось. Пока я не заметил предупреждение, когда я побежал
pm2 start
:Попался! После запуска
pm2 update
я наконец-то смог запустить приложение, как ожидалось. Больше нет ошибок "const в строгом режиме".источник
const не поддерживается ECMAScript. Поэтому после указания строгого режима вы получите синтаксическую ошибку. Вам нужно использовать var вместо const, если вы хотите, чтобы ваш код был совместим со всеми браузерами. Я знаю, не идеальное решение, но это то, что есть. Существуют способы создания свойств только для чтения в JavaScript (см. Можно ли реализовать свойства только для чтения в Pure JavaScript? ), Но я думаю, что это может быть излишним в зависимости от вашего сценария.
Ниже приведена заметка о совместимости браузера с MDN :
Совместимость браузера
источник
const
поддерживается в ECMAScript 6 и широко поддерживается: kangax.github.io/compat-table/es6/#const Но вы правы в своем ответе -'use strict';
иconst
не смешиваетесь.const
можно повторно декларировать в Safari 7, но не в Opera 21, Chrome 35 и Firefox 29.Использование
const
в строгом режиме доступно с выпуском Chrome 41. В настоящее время Chrome 41 Beta уже выпущен и поддерживает его.источник
источник
npm install -g nave; nave use 6.11.1
+1