web-dev-qa-db-fra.com

Déclarations en blocs non encore prises en charge en dehors du mode strict

Je cours Laravel 5.4 sur ma boîte de vagant Homestead. J'ai installé toutes les dépendances npm avec la commande npm install. Cela n'a produit aucune erreur.

Dans mon webpack.min.js fichier, j'ai:

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

Lorsque je veux exécuter npm run production, j'obtiens les erreurs suivantes:

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

Quel pourrait être le problème avec cela?

18
nielsv

J'ai eu le même problème causé par l'ancienne version du paquet nodejs sur Ubuntu. Je viens de mettre à jour la version 7.5 et son fonctionnement.

curl -sL https://deb.nodesource.com/setup_7.x | Sudo -E bash -
Sudo apt-get install -y nodejs
35
Łukasz Kuczmaja

La mise à niveau du paquet de noeud est la solution ici. Ajouter des étapes alternatives pour mettre à niveau le package de nœud, car il n’est pas nécessaire de télécharger, installer et gérer les versions de nœud vous-même. Vous pouvez utiliser un module appelé n pour mettre à jour votre paquet de nœuds sous Mac/Ubuntu.

Sudo npm install -g n
Sudo n stable

Cela installera le dernier package de nœud stable. Tu peux courir

node --version

Si vous voyez toujours l'ancienne version, il peut s'agir de problèmes de répertoire dans lesquels le nouveau package est installé. Je devais créer un lien symbolique pour que cela fonctionne.

Sudo ln -s  /usr/local/n/versions/node/9.0.0/bin/node  /usr/local/bin/node
13
Aniket Thakur

Votre nœud n'est pas mis à jour.

supprimez la version de votre nœud, download et installez la dernière version.

dans la racine du projet:

npm rebuild

Et essayez à nouveau:

npm run production

PS .: Si vous ne voulez pas supprimer la version de votre nœud, téléchargez la nouvelle et exécutez-la.

1
JuniorNunes

J'avais rencontré le même problème avec l'un de mes scripts de test dans NodeJS et j'ai résolu mon erreur en utilisant le mode strict d'ECMAScript 5.

"use strict";

Ajouté au-dessus de la ligne en haut de mon script et cela fonctionne bien.

Le mode strict apporte plusieurs modifications à la sémantique JavaScript normale:

  1. Élimine certaines erreurs silencieuses JavaScript en les changeant pour générer des erreurs.

  2. Corrige les erreurs qui rendent difficile l'optimisation pour les moteurs JavaScript: un code en mode strict peut parfois être exécuté plus rapidement qu'un code identique qui n'est pas en mode strict.

  3. Interdit certaines syntaxes susceptibles d'être définies dans les futures versions d'ECMAScript.

1
Jitendra

C’est parce que vous n’avez pas la dernière version de NodeJS sur votre machine ... Je suis sous Ubuntu, alors si vous utilisez une distribution Linux, essayez ceci.

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