Метеор не заводится. Объявления с блочной областью действия (let, const, function, class) еще не поддерживаются за пределами строгого режима в ejson.js.

Я новичок в Meteor и только пытаюсь установить и запустить новое приложение. В прошлую пятницу у меня все работало, но сегодня пришлось переустановить, и приложение больше не работает.

Установка была проблемой. Попытка установить на Windows и обнаружила, что установщики просто не работают. Прибегал к извлечению файла tar.gz. Кроме того, из-за ограничений компании пришлось установить в другое место (значение по умолчанию в %LocalAppData% заблокировано политикой). Но, как я уже сказал, это работало на прошлой неделе, но не может заставить это работать сегодня. Другие члены команды тоже начали видеть это на этой неделе. При первом запуске meteor он обновляет метеоритный инструмент до версии 1.5.2.2, а затем обновляет различные пакеты. Пакет ejson один и обновлен до версии 1.0.14. Если я запускаю meteor update, он говорит, что проект уже находится в версии 1.5.2.2. (самая последняя) и зависимости верхнего уровня находятся в своих последних совместимых версиях. Как это исправить? Спасибо!

Выход консоли:

C:\dev\R&D\meteor\meteor-test>meteor
[[[[[ C:\dev\R&D\meteor\meteor-test ]]]]]

=> Started proxy.
=> Started MongoDB.
W20171020-14:19:35.920(-5)? (STDERR) C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\packages\ejson.js:749
W20171020-14:19:36.013(-5)? (STDERR)       for (let i = 0; i < length; i += 1) {
W20171020-14:19:36.016(-5)? (STDERR)            ^^^
W20171020-14:19:36.018(-5)? (STDERR)
W20171020-14:19:36.019(-5)? (STDERR) SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
W20171020-14:19:36.021(-5)? (STDERR)     at Object.exports.runInThisContext (vm.js:53:16)
W20171020-14:19:36.022(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:332:30
W20171020-14:19:36.023(-5)? (STDERR)     at Array.forEach (native)
W20171020-14:19:36.025(-5)? (STDERR)     at Function._.each._.forEach (C:\dev\programs\.meteor\packages\meteor-tool\1.5.2_2\mt-os.windows.x86_32\dev_b
undle\server-lib\node_modules\underscore\underscore.js:79:11)
W20171020-14:19:36.026(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:158:5
W20171020-14:19:36.028(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:388:5
W20171020-14:19:36.029(-5)? (STDERR)     at Function.run (C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\profile.js:510:12)
W20171020-14:19:36.031(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:387:11
=> Exited with code: 1
W20171020-14:19:40.739(-5)? (STDERR) C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\packages\ejson.js:749
W20171020-14:19:40.741(-5)? (STDERR)       for (let i = 0; i < length; i += 1) {
W20171020-14:19:40.745(-5)? (STDERR)            ^^^
W20171020-14:19:40.752(-5)? (STDERR)
W20171020-14:19:40.754(-5)? (STDERR) SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
W20171020-14:19:40.756(-5)? (STDERR)     at Object.exports.runInThisContext (vm.js:53:16)
W20171020-14:19:40.757(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:332:30
W20171020-14:19:40.759(-5)? (STDERR)     at Array.forEach (native)
W20171020-14:19:40.762(-5)? (STDERR)     at Function._.each._.forEach (C:\dev\programs\.meteor\packages\meteor-tool\1.5.2_2\mt-os.windows.x86_32\dev_b
undle\server-lib\node_modules\underscore\underscore.js:79:11)
W20171020-14:19:40.765(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:158:5
W20171020-14:19:40.767(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:388:5
W20171020-14:19:40.769(-5)? (STDERR)     at Function.run (C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\profile.js:510:12)
W20171020-14:19:40.771(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:387:11
=> Exited with code: 1
W20171020-14:19:45.026(-5)? (STDERR) C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\packages\ejson.js:749
W20171020-14:19:45.028(-5)? (STDERR)       for (let i = 0; i < length; i += 1) {
W20171020-14:19:45.030(-5)? (STDERR)            ^^^
W20171020-14:19:45.031(-5)? (STDERR)
W20171020-14:19:45.033(-5)? (STDERR) SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
W20171020-14:19:45.034(-5)? (STDERR)     at Object.exports.runInThisContext (vm.js:53:16)
W20171020-14:19:45.036(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:332:30
W20171020-14:19:45.037(-5)? (STDERR)     at Array.forEach (native)
W20171020-14:19:45.039(-5)? (STDERR)     at Function._.each._.forEach (C:\dev\programs\.meteor\packages\meteor-tool\1.5.2_2\mt-os.windows.x86_32\dev_b
undle\server-lib\node_modules\underscore\underscore.js:79:11)
W20171020-14:19:45.042(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:158:5
W20171020-14:19:45.043(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:388:5
W20171020-14:19:45.045(-5)? (STDERR)     at Function.run (C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\profile.js:510:12)
W20171020-14:19:45.047(-5)? (STDERR)     at C:\dev\R&D\meteor\meteor-test\.meteor\local\build\programs\server\boot.js:387:11
=> Exited with code: 1
=> Your application is crashing. Waiting for file change.

person 03T    schedule 20.10.2017    source источник
comment
Полагаю, я бы сказал, что ваш движок javascript (метеор?) не использует последний javascript. Ищите способ указать метеору использовать последнюю версию JavaScript.   -  person theGleep    schedule 20.10.2017
comment
Вы запускали meteor npm install перед запуском meteor в папке приложения?   -  person Jankapunkt    schedule 21.10.2017
comment
Да. Я сделал это уже.   -  person 03T    schedule 23.10.2017


Ответы (1)


Вы должны быть осторожны с синтаксисом при написании кода в Meteor. Хотя Meteor работает поверх Node.JS, он работает на более старой версии (например, Meteor 1.5 связан с NodeJs v4.8.x), чем большинство проектов NodeJS (NodeJS6.x считается LTS).

В вашем случае похоже, что вы используете let внутри цикла for. Не похоже, что этот синтаксис поддерживается до тех пор, пока NodeJS 7.x (исходник). Вместо этого используйте var (это старый стандарт Javascript).

При работе с Meteor я настоятельно рекомендую использовать предварительно скомпилированный язык (например, Typescript), поскольку он позволяет использовать современный синтаксис, который будет совместим с более поздними версиями Meteor (узел 8.x будет частью Meteor 1.6).

person Derek Brown    schedule 24.10.2017
comment
К сожалению, синтаксис с ошибкой находится внутри зависимого пакета (ejson) и является проблемой после простого запуска meteor create meteor-test из командной строки, а не моего собственного кода. Я понимаю, о чем вы говорите, и сообщения об ошибках подтверждают это утверждение, но если это действительно так, это означает, что Meteor не работает (по крайней мере, в Windows). - person 03T; 13.11.2017