2016-02-14 18 views
0

根據Quill的建議,我再次發佈這個。我第一次發佈「npm更新節點」解決了這個問題。(教程)腳本不運行SyntaxError:塊範圍聲明

我從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 

現在,如果我改變「讓」 s到「VAR」當時的工作!

我之前有過這個問題(幾天前)和「npm更新節點」修復了這個問題(我想 - 也許我錯誤地用「var」而不是「let」運行了該版本)。不過,我已經重新安裝了Windows 10,現在「npm更新節點」不再解決問題。

那麼javascript和ecmascript的哪些版本可以期望能夠在節點v5.6.0中執行?我一直在boogle搜索,我無法找到一個簡單的javascript功能表,用於不同版本的節點和JavaScript。我想知道版本節點支持javascript/ecmascript的版本對於每個節點程序員都是非常基本的/重要的信息!有人可以指我到這樣的桌子嗎?

我買了一個錯誤的教程嗎?我認爲作者使用Linux或MAC,我正在使用Windows。不應該在mac/linux和windows上以同樣的方式工作嗎?

請告訴我,這個程序是否適合您的計算機。請務必提及您是否運行mac,unix,linux或windows(或其他?)。

感謝 齊格弗裏德

+2

要麼''在你的代碼中使用strict'',要麼使用'--harmony_sloppy_let'命令行開關或'--use_strict'命令行開關 –

+0

你需要驗證你的node.js版本是什麼實際運行。 'node -v'會告訴你。 – jfriend00

+0

標題不是很具描述性。至於Node支持的語言功能,請參閱https://nodejs.org/en/docs/es6/。 –

回答

1

你應該只添加'use strict'到JS部分

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

這將隨即開始工作。奇怪的是,教程沒有提到這一點。

+0

謝謝 - '嚴格使用'和--use-strict做這項工作。 – user3477493

+0

這很好。你可以設置這個答案嗎? – eljefedelrodeodeljefe

+0

哦 - 我不得不穀歌搜索學習如何做到這一點,因爲我不知道我可以標記爲答案。好!很高興知道這個綠色的複選標記。謝謝大家1 – user3477493