在严格模式下使用 const :Azure Web App

Sou*_*tta 2 azure node.js azure-web-app-service

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)
Run Code Online (Sandbox Code Playgroud)

每次创建 Azure Web App 项目并发布 Express App 时都会引发错误。我尝试使用 Azure Express 以及 Blank nodeJs App 来做到这一点

Jer*_*Liu 7

看起来它是由 Azure 上的无效节点版本引起的。转到 Azure 门户,您的 Web 应用程序 - 应用程序设置,选中WEBSITE_NODE_DEFAULT_VERSION

网络应用节点版本

一旦我们指定了 Azure 上不可用的版本,就会使用一个相当旧的版本 0.10.40 const,默认情况下未启用该版本,因此我们遇到了SyntaxError: Use of const in strict mode. 有关更多详细信息,请参阅相关线程

我们可以使用 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"
Run Code Online (Sandbox Code Playgroud)

此处指定的节点版本优先。要修复它,只需像这样更新版本并部署:

nodeProcessCommandLine: "%SystemDrive%\Program Files (x86)\nodejs\8.9.4\node.exe"
Run Code Online (Sandbox Code Playgroud)

参考这个


总结一下,优先级:iisnode.yml > package.json(engine)> Application settings。推荐应用设置,因为它很容易在门户上检查和修改。