node.js 在严格模式之外尚不支持块范围的声明
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/41960142/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Block-scoped declarations not yet supported outside strict mode
提问by nielsv
I'm running Laravel 5.4on my Homestead vagrant box. I've installed all the npm dependencies with npm installcommand. That didn't produce any errors.
我在我的 Homestead vagrant box 上运行Laravel 5.4。我已经使用npm install命令安装了所有 npm 依赖项。那没有产生任何错误。
In my webpack.min.jsfile I have:
在我的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');
When I want to run npm run productionI'm getting the following errors:
当我想运行时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
What could be the problem with this?
这可能是什么问题?
回答by ?ukasz Kuczmaja
I had the same problem coused by the old version of nodejs package on Ubuntu. I've just updated to 7.5 and it's working.
我在 Ubuntu 上遇到了由旧版本的 nodejs 包引起的同样问题。我刚刚更新到 7.5,它正在工作。
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
回答by Aniket Thakur
Upgrading node package is the solution here. Adding altenative steps to upgrade node package as there is no need to download, install and manage node versions yourself. You can use a module called nto upgrade you node package in Mac/Ubuntu
升级节点包是这里的解决方案。添加替代步骤来升级节点包,因为无需自己下载、安装和管理节点版本。您可以使用一个模块n来升级 Mac/Ubuntu 中的节点包
sudo npm install -g n
sudo n stable
This will install latest stable node package. You can run
这将安装最新的稳定节点包。你可以跑
node --version
If you are still seeing old version it might be directory issues where new package is installed. I had to create a symlink to make it work-
如果您仍然看到旧版本,则可能是安装新软件包的目录问题。我必须创建一个符号链接才能使其工作-
sudo ln -s /usr/local/n/versions/node/9.0.0/bin/node /usr/local/bin/node
回答by Winstijn Smit
This is because you don't have the latest version of NodeJS on your machine. I'm on Ubuntu so if you're on any kind of Linux distro try this.
这是因为您的机器上没有最新版本的 NodeJS。我在 Ubuntu 上,所以如果你在任何类型的 Linux 发行版上试试这个。
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs
回答by Jitendra
I had faced the same problem with one of my test script in NodeJS and i resolved my error by using ECMAScript 5's strict mode.
我在 NodeJS 中的一个测试脚本遇到了同样的问题,我通过使用 ECMAScript 5 的严格模式解决了我的错误。
"use strict";
Added above line at the top of my script and it works well.
在我的脚本顶部添加了上面的行,它运行良好。
Strict mode makes several changes to normal JavaScript semantics:
严格模式对正常的 JavaScript 语义进行了一些更改:
Eliminates some JavaScript silent errors by changing them to throw errors.
Fixes mistakes that make it difficult for JavaScript engines to perform optimizations: strict mode code can sometimes be made to run faster than identical code that's not strict mode.
Prohibits some syntax likely to be defined in future versions of ECMAScript.
通过将某些 JavaScript 静默错误更改为抛出错误来消除它们。
修复了使 JavaScript 引擎难以执行优化的错误:有时可以使严格模式代码比非严格模式的相同代码运行得更快。
禁止某些可能在 ECMAScript 的未来版本中定义的语法。
回答by JuniorNunes
Your node isn't updated.
您的节点未更新。
remove your node version, downloadand install the latest version.
删除您的节点版本,下载并安装最新版本。
in project root run:
在项目根运行中:
npm rebuild
And try again:
然后再试一次:
npm run production
PS.: If you don't want remove your node version, download the new and run with this.
PS。:如果您不想删除节点版本,请下载新的并运行。
回答by Inamur Rahman
I was also facing the same issue and I have tried to run these command and now it is working. But before that uninstall the nodejs first
我也面临同样的问题,我曾尝试运行这些命令,现在它正在工作。但在此之前先卸载nodejs
sudo apt-get update
apt-cache policy nodejs
sudo apt install nodejs
I hope your problem will be solved.
我希望你的问题会得到解决。

