我正在Azure上運行一個Node應用程序。這是一個Web API,當我嘗試調用它,我看到控制檯節點此消息:我在Node.JS中得到一個SyntaxError,但我無法從日誌消息中找出該錯誤的來源
Application has thrown an uncaught exception and is terminated:
SyntaxError: Unexpected token (
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:414:25)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:313:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object.<anonymous> (D:\home\site\wwwroot\app.js:17:23)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
我跑我的整個代碼通過eslint
,並沒有發現任何語法錯誤。它在我的本地機器上運行良好,但不在Azure上運行。
上述各點的消息,在app.js線17和列23,這是一個require
:
let warehouseExport = require('./routes/warehouse-export-api');
我跑eslint
和jshint
專門對上面提到的文件中,並且不存在語法錯誤。
有什麼其他方法可以獲取語法錯誤的確切位置,以及爲什麼代碼在Azure上失敗,但在本地計算機上運行?
我的嘗試:
- 裹在try-catch代碼和搶行號 - 它顯示了
undefined
:
try { var warehouseExport = require('./routes/warehouse-export-api'); } catch (error) { console.log(error + ', line ' + error.lineNumber); }
@RobertRowntree它沒有工作,因爲我剛剛添加這個新文件。沒有額外的構建步驟,該應用程序非常簡單,我以前只是將整個目錄FTP到服務器,然後完成。 – K48
@ K48你有沒有試過''catch'裏面的console.log(error.stack)'?你提供的跟蹤(我猜Azure所報告的)似乎會錯過通常在'SyntaxError'情況下顯示的引導行。 –