我有一些在多個專案中使用過的異步函式,但是當我將它們添加到另一個專案時,它們突然不起作用。
這些功能之一的示例是:
const ddbGet = async (params) => {
try {
const data = await docClient.get(params).promise();
return data;
} catch (err) {
console.log("Failure", err.message);
return false;
}
};
拋出的錯誤是:
const ddbGet = async (params) => {
^
SyntaxError:意外的令牌(
但是我知道函式的語法沒有問題,因為它們在其他地方成功使用。
我已經看到了一些其他問題的答案,這些答案暗示了 JSHint 和 ESLint 的一些問題,但是我不相信我正在使用其中任何一個,但只是為了確保我安裝了 ESLint 并按照這些答案中的建議指定了 ECMA 版本和這個仍然拋出錯誤。
我還確保我使用的是最新版本的 Node.js。
如果我洗掉這些函式,則會由于 node_modules 檔案夾中的異步函式而引發錯誤。
async handshake(transportName, req, closeConnection) {
`^^^^^^^^^`
SyntaxError:意外的識別符號
有誰知道問題可能是什么?謝謝。
uj5u.com熱心網友回復:
由于檔案,或者更確切地說 AWS Cloud9 的入門沒有保持最新(使用舊腳本安裝 NVM)并且看到該專案非常舊(根據問題的擴展評論部分),它肯定是 NodeJS 版本。
nvm lsOP 給我們的輸出證實了這一點(我只對其進行了格式化):
v6.15.1
-> v17.2.0 system
default -> 6 (-> v6.15.1)
node -> stable (-> v17.2.0) (default)
stable -> 17.2 (-> v17.2.0) (default)
iojs -> N/A (default)
lts/* -> lts/argon (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.9 (-> N/A)
lts/fermium -> v14.18.3 (-> N/A)
lts/gallium -> v16.13.2 (-> N/A)
該行default -> 6 (-> v6.15.1)通知我們使用的默認 NodeJS 版本(用于整個系統)是v6.15.1.
不幸的是,NodeJS在v7.6.
您可以運行nvm install 17.2.0然后nvm use 17.2.0(或只是nvm use部分,但我不知道v17.2.0我們在輸出中看到的是否已通過 NVM 有效安裝),這可能會解決這個特定問題。
uj5u.com熱心網友回復:
在 Ga?tan Boyals 讓我走上正確的道路后,我通過更多研究找到了解決方案!
他是正確的,Node.js 的默認版本是問題所在,解決此問題的解決方案是 nvm alias default 17.2.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/414265.html
標籤:
