Application has thrown an uncaught exception and is terminated: SyntaxError: Use of const in strict mode.
at Module._compile (module.js:434:25)
at Object..js (module.js:464:10)
at Module.load (module.js:353:31)
at Function._load (module.js:311:12)
at Module.require (module.js:359:17)
at require (module.js:375:17)
at Object.<anonymous> (D:\home\site\wwwroot\node_modules\mongoose\index.js:7:18)
at Module._compile (module.js:446:26)
at Object..js (module.js:464:10)
at Module.load (module.js:353:31)
每次创建Azure Web App项目并发布Express App都会引发错误。我尝试使用Azure Express以及Blank nodeJs App
答案 0 :(得分:3)
可能是由于Azure上的无效节点版本引起的。转到Azure门户,然后单击“ Web应用程序-应用程序设置”,选中WEBSITE_NODE_DEFAULT_VERSION
。
一旦我们指定了Azure上不可用的版本,就会使用一个相当旧的版本0.10.40,其中默认情况下未启用const
,因此我们遇到了SyntaxError: Use of const in strict mode
。有关更多详细信息,请参见related thread。
我们可以使用10.6.0、8.11.1等。转到https://<yourwebappname>.scm.azurewebsites.net/api/diagnostics/runtime
查看所有可用版本。
Clinkz的注意事项
在某些情况下,上述解决方案可能不起作用。这可能是因为您的项目包含文件iisnode.yml
。如果该文件存在,它将覆盖应用程序设置环境变量。该文件的内容应如下:
nodeProcessCommandLine: "%SystemDrive%\Program Files (x86)\nodejs\0.10.4\node.exe"
此处指定的节点版本优先。要对其进行修复,只需像这样更新版本并部署:
nodeProcessCommandLine: "%SystemDrive%\Program Files (x86)\nodejs\8.9.4\node.exe"
请参阅this。
最后,优先级:iisnode.yml> package.json(engine)>应用程序设置。建议您设置应用程序,因为它很容易在门户网站上检查和修改。