web-dev-qa-db-ja.com

厳密モード以外ではブロックスコープ宣言はまだサポートされていません

Homestead vagrant boxでLaravel 5.4を実行しています。 npm installコマンドですべてのnpm依存関係をインストールしました。エラーは発生しませんでした。

私の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

これの問題は何でしょうか?

29
nielsv

Ubuntuの古いバージョンのnodejsパッケージが原因で同じ問題が発生しました。私は7.5にアップデートしました。

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

ここでは、ノードパッケージのアップグレードがソリューションです。ノードバージョンを自分でダウンロード、インストール、管理する必要がないため、ノードパッケージをアップグレードする代替手順を追加します。 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
21
Aniket Thakur

これは、マシンにNodeJSの最新バージョンがないためです。私はUbuntuを使用していますので、Linuxディストリビューションを使用している場合はこれを試してください。

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

NodeJSのテストスクリプトの1つで同じ問題に直面していましたが、ECMAScript 5の厳格モードを使用してエラーを解決しました。

"use strict";

スクリプトの先頭に上記の行を追加しましたが、うまく機能します。

厳密モードは、通常のJavaScriptセマンティクスにいくつかの変更を加えます。

  1. エラーをスローするように変更することにより、一部のJavaScriptサイレントエラーを排除します。

  2. JavaScriptエンジンが最適化を実行するのを難しくするミスを修正します。厳密モードではない同一のコードよりも厳密モードのコードをより速く実行できる場合があります。

  3. ECMAScriptの将来のバージョンで定義される可能性のある構文を禁止します。

2
Jitendra

ノードは更新されません。

ノードバージョン download を削除し、最新バージョンをインストールします。

プロジェクトルートの実行:

npm rebuild

そしてさらに試みる:

npm run production

PS .:ノードのバージョンを削除したくない場合は、新しいバージョンをダウンロードして実行してください。

1
JuniorNunes

私も同じ問題に直面していたので、これらのコマンドを実行しようとしましたが、現在は機能しています。 ただし、その前に最初にnodejsをアンインストールします

Sudo apt-get update

apt-cache policy nodejs

Sudo apt install nodejs

あなたの問題が解決されることを願っています。

0
Inamur Rahman