網站搜尋

javascript - 語法錯誤: 在嚴格模式下使用 const


我正在使用 node.js,在我的其中一個 js 檔案中,我在「嚴格模式」下使用 const。當嘗試運行它時,我收到一個錯誤:

SyntaxError: Use of const in strict mode.

做到這一點的最佳做法是什麼?

編輯:

'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB

答案#1

const 和 let 是 ECMAScript 2015(亦稱 ES6 和 Harmony)的一部分,且在 Node.js 0.10 或 0.12 中並未預設啟用。自 Node.js 4.x 起,“所有 V8 認為穩定的[ES2015]功能,在 Node.js 中預設啟用,且不需要任何類型的執行時標誌。” Node.js 文件提供了 ES2015 功能的概覽,說明哪些功能預設啟用,哪些功能需要執行時標誌。因此,升級到 Node.js 4.x 或更新版本後,該錯誤應該會消失。

要在 Node.js 0.10 和 0.12 中啟用部分 ECMAScript 2015 功能(包括 const 和 let);請使用 harmony 標誌啟動您的 node 程式,否則您會遇到語法錯誤。例如:

node --harmony app.js

這完全取決於你的嚴格模式(strict js)位於哪一側。我建議在伺服器端使用 strict 模式與 const 聲明,並使用 harmony 標誌啟動伺服器。至於客戶端,你應該使用 Babel 或類似的工具將 ES2015 轉換為 ES5,因為並非所有的客戶端瀏覽器都支援 const 聲明。

答案#2

如果這在 nodejs 中發生,是由於 nodejs 版本過舊。透過使用以下方式更新 node:

1) 清除 NPM 的快取:

sudo npm cache clean -f

2) 安裝一個叫做 'n' 的小幫手

sudo npm install -g n

3) 安裝最新穩定版本的 NodeJS

sudo n stable

更新 Node.js 指示,來源自 https://stackoverflow.com/a/19584407/698072

答案#3

通常當執行程式碼所使用的 Node 版本比預期的舊時,就會發生此錯誤。(例如 0.12 或更舊版本)。

如果你正在使用 nvm,請確保你使用的是正確版本的 Node。你可以在 node.green 上檢查嚴格模式下 const 的相容性。

我在另一個帖文中發現了類似的問題,並在那裡詳細地發表了我的回答

答案#4

在更新節點後,一個重要的步驟是將你的節點二進位檔連結到最新安裝的節點版本

sudo ln -sf /usr/local/n/versions/node/6.0.0/bin/node /usr/bin/node  

答案#5

這可能不是對每個人都適用的解決方法,但對我來說是有效的。

如果你正在使用 NVM,你可能沒有為你運行的代碼啟用正確的 Node 版本。重啟後,你的默認 Node 版本會回到系統默認版本。

在使用 react-native 時遇到這個問題,而之前一直運作正常。只需使用 nvm 來使用正確版本的 node 就能解決這個問題。