根据Quill的建议,我再次发布此消息。我第一次发布" npm更新节点"解决了这个问题。
我从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" s更改为" var" s然后它就可以了!
我之前(几天前)和" npm更新节点"解决了这个问题(我想 - 也许我错误地用" var"而不是" let")运行版本。但是,我已经重新安装了Windows 10,现在" npm更新节点"不再解决问题了。
那么我希望能够使用node v5.6.0执行哪些版本的javascript和ecmascript?我一直在搜索,我找不到一个简单的javascript功能表,用于不同版本的节点和javascript。我认为知道版本节点支持哪些版本的javascript / ecmascript对每个节点程序员来说都是非常基本/重要的信息!有人能指点我这样的桌子吗?
我买了一个糟糕的教程吗?我认为作者使用linux或MAC,我使用的是Windows。节点不应该在mac / linux和windows上以相同的方式工作吗?
请告诉我此程序是否适用于您的计算机。请务必提及您是否正在运行mac,unix,linux或windows(或其他什么?)。
由于 齐格弗里德
答案 0 :(得分:1)
您应该将'use strict'
添加到js部分的开头
#!/usr/bin/env node
'use strict'
(...)
这将立即起作用。这个教程没有提到这一点,这很奇怪。