2017-01-31 9 views
7

Używam Laravel 5.4 na moim polu Vagrant Homestead. Zainstalowałem wszystkie zależności npm za pomocą polecenia npm install. To nie powodowało żadnych błędów.Deklaracje o zasięgu bloku nie są jeszcze obsługiwane poza trybem ścisłym - Laravel Mix

W moich webpack.min.js plik mam:

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'); 

Gdy chcę uruchomić npm run production Dostaję następujące błędy:

> @ 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 

Co może być problemem z tym?

+3

nodejs 5 nie obsługuje trybu zezwalającego na "wyjdź" z zewnątrz. a) update nodejs lub b) wpisz '' use strict '; 'na pierwszej linii twojego pliku js lub c) użyj babel do przeniesienia pliku do es5 – baao

+0

@baao, dodałem" use strict "; na górze mojego pliku webpack.mix.js, ale nic się nie zmieniło. – nielsv

+1

Myślę, że musi znajdować się w pliku, w którym faktycznie jest używane. Jeśli nie możesz zmienić tego pliku, nadal masz opcje a i c – baao

Odpowiedz

19

Miałem ten sam problem ze sprzężeniem ze starszą wersją pakietu nodejs na Ubuntu. Właśnie zaktualizowałem do wersji 7.5 i działa.

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

Twój węzeł nie jest aktualizowany.

usuń wersję węzła, download i zainstaluj najnowszą wersję.

w biegu głównym projektu:

npm rebuild 

i spróbuj jeszcze raz:

npm run production 

PS .: Jeśli nie chcesz usunąć wersję węzła, należy pobrać i uruchomić nowy z tym.

2

Pakiet węzłów aktualizacji jest tutaj rozwiązaniem. Dodanie altenatywnych kroków do uaktualnienia pakietu węzłów, ponieważ nie ma potrzeby samodzielnego pobierania, instalowania i zarządzania wersjami węzłów. Można użyć modułu o nazwie n uaktualnić Ci pakiet węzłów w systemie Mac/Ubuntu

sudo npm install -g n 
sudo n stable 

To zainstaluje najnowszy stabilny pakiet węzeł. Możesz uruchomić

node --version 

Jeśli nadal widzisz starą wersję, może to być problem z katalogiem, w którym jest zainstalowany nowy pakiet. Musiałem stworzyć dowiązanie symboliczne, aby zadziałało -

Powiązane problemy