Декларации в области блока еще не поддерживаются вне строгого режима

Я использую Laravel 5.4 на своем бродячем боксе Homestead. Я установил все зависимости npm с npm install команда. Это не произвело никаких ошибок.

В моем файле webpack.min.js у меня есть:

const { mix } = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js([
        'resources/assets/plugins/jquery-1.11.3.min.js',
        'resources/assets/plugins/bootstrap/js/bootstrap.min.js',
        'resources/assets/js/main.js'
    ], 'public/js'
);

mix.combine([
       'resources/assets/plugins/bootstrap/css/bootstrap.min.css',
       'resources/assets/plugins/font-awesome/css/font-awesome.css',
       'resources/assets/css/styles.css'
   ], 'public/css/all.css');

Когда я хочу бежать npm run production Я получаю следующие ошибки:

> @ production /home/vagrant/projects/nielsvroman
> node node_modules/cross-env/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

/home/vagrant/projects/nielsvroman/node_modules/laravel-mix/setup/webpack.config.js:120
        let extractPlugin = new plugins.ExtractTextPlugin(
        ^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:404:25)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at requireConfig (/home/vagrant/projects/nielsvroman/node_modules/webpack/bin/convert-argv.js:96:18)
    at /home/vagrant/projects/nielsvroman/node_modules/webpack/bin/convert-argv.js:109:17
    at Array.forEach (native)

npm ERR! Linux 3.19.0-25-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "production"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! code ELIFECYCLE
npm ERR! @ production: `node node_modules/cross-env/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ production script 'node node_modules/cross-env/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js'.
npm ERR! This is most likely a problem with the  package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node node_modules/cross-env/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/vagrant/projects/nielsvroman/npm-debug.log

В чем может быть проблема с этим?

4 ответа

Решение

У меня была та же проблема, связанная со старой версией пакета nodejs в Ubuntu. Я только что обновился до 7.5, и он работает.

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

Обновление пакета узла является решением здесь. Добавление альтернативных шагов для обновления пакета узла, поскольку нет необходимости загружать, устанавливать и управлять версиями узла самостоятельно. Вы можете использовать модуль под названием n обновить пакет вашего узла в Mac/Ubuntu

sudo npm install -g n
sudo n stable

Это установит последний стабильный пакет узла. Вы можете запустить

node --version

Если вы все еще видите старую версию, это может быть проблема с каталогом, где установлен новый пакет. Я должен был создать символическую ссылку, чтобы она работала

sudo ln -s  /usr/local/n/versions/node/9.0.0/bin/node  /usr/local/bin/node

Это потому, что на вашем компьютере не установлена ​​последняя версия NodeJS. Я работаю в Ubuntu, так что если вы работаете с любым дистрибутивом Linux, попробуйте это.

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs

Я столкнулся с той же проблемой с одним из моих тестовых скриптов в NodeJS, и я решил свою ошибку, используя строгий режим ECMAScript 5.

"use strict";

Добавленная выше строка в верхней части моего скрипта, и она работает хорошо.

Строгий режим вносит несколько изменений в обычную семантику JavaScript:

  1. Устраняет некоторые тихие ошибки JavaScript, изменяя их на ошибки.

  2. Исправляет ошибки, мешающие движкам JavaScript выполнять оптимизацию: иногда код в строгом режиме может выполняться быстрее, чем идентичный код, не являющийся строгим режимом.

  3. Запрещает некоторый синтаксис, который может быть определен в будущих версиях ECMAScript.

Ваш узел не обновлен.

удалите версию своего узла, загрузите и установите последнюю версию.

в корне проекта запустите:

npm rebuild

И попробуй еще раз:

npm run production

PS: Если вы не хотите удалять версию своего узла, скачайте новую и запустите с этим.

$ npm run dev

> @ dev /var/www/laratest2
> npm run development


> @ development /var/www/laratest2
> cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

/var/www/laratest2/node_modules/laravel-mix/setup/webpack.config.js:6
let mix = require('../src/index');
^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at requireConfig (/var/www/laratest2/node_modules/webpack/bin/convert-argv.js:97:18)
    at /var/www/laratest2/node_modules/webpack/bin/convert-argv.js:104:17
    at Array.forEach (native)

npm ERR! Linux 4.15.0-45-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "development"
npm ERR! node v4.2.6
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE
npm ERR! @ development: `cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @ development script 'cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the  package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs 
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls 
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/laratest2/npm-debug.log

npm ERR! Linux 4.15.0-45-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "dev"
npm ERR! node v4.2.6
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE
npm ERR! @ dev: `npm run development`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @ dev script 'npm run development'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the  package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     npm run development
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs 
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls 
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/laratest2/npm-debug.log

Когда я бежал npm run dev Я получал указанную выше ошибку, потому что у меня была более старая версия nodejs.

Используйте следующую команду для обновления пакета nodejs.

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -

sudo apt-get install -y nodejs

Вы можете проверить версию, используя:

node -v
npm -v

теперь выполните следующую команду:

npm rebuild

Тогда попробуйте бежать npm run dev, он работает для меня.

ВЫХОД

 DONE  Compiled successfully in 9626ms                                                                                               3:14:07 PM

       Asset    Size  Chunks             Chunk Names
/css/app.css  226 kB       0  [emitted]  mix

Я также столкнулся с той же проблемой, и я попытался выполнить эту команду, и теперь она работает. Но перед этим сначала удалите nodejs

sudo apt-get update

apt-cache policy nodejs

sudo apt install nodejs

Я надеюсь, что ваша проблема будет решена.

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