javascript - (教程)由于 SyntaxError : Block-scoped declarations,脚本无法运行

标签 javascript node.js

根据 Quill 的建议,我再次发布此内容。我第一次发布“npm update node”解决了这个问题。

我从 Packtpub.com 购买了名为“使用 NodeJs 和 MongoDB 进行 Web 开发”的教程,并且我想运行示例教程代码。这是一个例子:

#!/usr/bin/env node
console.log('Argument vector');
console.log(process.argv);

let args = process.argv.slice(2);

console.log('\nArguments after slicing');
console.log(args);    
let name = args[0];    
if (!name) {
    throw Error('\nYou have not given your name, bye');
}

console.log('\nHello ' + name);

所以我下载并安装 Node-v5.6.0-x64.msi。为什么我使用let命令时会出现错误:

-*- mode: compilation; default-directory: "c:/Users/v-sihein/Documents/books/2016/javascript/Web Development with Node.JS and MongoDB/3413OS_Section 01_Code/1/1.3/" -*-
Compilation started at Sat Feb 13 16:25:01

node 03-hello-arguments.js siegfried
c:\Users\v-sihein\Documents\books\2016\javascript\Web Development with Node.JS and MongoDB\3413OS_Section 01_Code\1\1.3\03-hello-arguments.js:9
let args = process.argv.slice(2);
^^^

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:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:140:18)
    at node.js:1001:3

Compilation exited abnormally with code 1 at Sat Feb 13 16:25:01

现在,如果我将“let”更改为“var”,那么它就可以工作了!

我之前(几天前)遇到过这个问题,“npm update node”解决了这个问题(我想——也许我错误地用“var”而不是“let”运行了版本)。但是,我重新安装了 Windows 10,现在“npm update node”不再解决问题。

那么什么版本的 javascript 和 ecmascript 可以在 Node v5.6.0 上执行?我一直在 boogle 搜索,但找不到不同版本的 Node 和 javascript 的 javascript 功能的简单表。我认为了解版本 Node 支持哪些版本的 javascript/ecmascript 对于每个 Node 程序员来说都是非常基本/重要的信息!有人可以指点我这样一张 table 吗?

我买了一个糟糕的教程吗?我认为作者使用的是linux或MAC,而我使用的是windows。 Node 在 mac/linux 和 windows 上不应该以同样的方式工作吗?

请告诉我这个程序是否适合您的计算机。请务必注明您运行的是 mac、unix、linux 还是 windows(或其他?)。

谢谢 齐格弗里德

最佳答案

您应该将'use strict'添加到js部分的开头

#!/usr/bin/env node
'use strict'
(...)

这将立即起作用。奇怪的是教程没有提到这一点。

关于javascript - (教程)由于 SyntaxError : Block-scoped declarations,脚本无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35387066/

相关文章:

javascript - var a={ }; 之间的区别var a= new functionObj();

JavaScript:单击时旋转图像

Node.js 脚本正在运行,但它不会停止!

node.js - Nodejs Azure 存储 blob 服务 : getStats not working

node.js - MQTT 嵌入 mosca,无需任何代理

javascript - 为什么它向我抛出错误 : TypeError: project. save is not a function

javascript - 如何将事件类设置为 Cycle2 的第二张图像?

javascript - 如何重定向到另一个网页?

javascript - meteor js : saving collection on client

node.js - Rest API Kafka 流