You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Windows应用服务部署Node/React应用时出现const严格模式错误

Azure Windows应用服务部署Node/React应用时"const在严格模式中使用"错误的排查与解决

错误日志

应用抛出未捕获异常并终止:

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> (C:\Program Files\iisnode\interceptor.js:459:1)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Module.load (module.js:353:31)

环境信息

  • 本地Node版本:v18.3.0
  • Azure应用服务配置:WEBSITE_NODE_DEFAULT_VERSION: "~18.3.0"
  • TypeScript配置(tsconfig.json):
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "./build",
    "sourceMap": true,
    "strict": true,
    "esModuleInterop": true,
    "noImplicitAny": false,
    "allowJs": true,
    "moduleResolution": "node",
    "lib": [
      "es6", "dom", "dom.iterable"
    ],
    "downlevelIteration": true
  }
}

问题原因分析

从错误栈可以看到,异常触发自C:\Program Files\iisnode\interceptor.js,说明iisnode模块实际调用的Node版本并非你配置的v18.3.0,而是不支持严格模式下使用const的旧版本(如Node.js 0.10.x或更早)。

Azure Windows环境下的常见诱因:

  1. WEBSITE_NODE_DEFAULT_VERSION配置未生效,可能是拼写错误、版本格式问题,或应用未重启加载配置
  2. iisnode优先使用系统默认的旧版Node,未关联到你指定的Node版本
  3. 部署包包含本地node_modules,部分依赖触发了旧版Node的兼容逻辑

解决方法

1. 确认Node版本配置并重启应用

  • 进入Azure门户,打开目标应用服务的「配置」→「应用程序设置」,检查WEBSITE_NODE_DEFAULT_VERSION是否准确设置为~18.3.0
  • 可通过Kudu站点验证实际Node版本:进入应用服务「高级工具」→「Go」,在Debug Console中执行node -v
  • 修改配置后必须重启应用服务,确保配置生效

2. 配置iisnode指向指定Node版本

在应用根目录创建或修改web.config,明确指定Node.exe路径:

<configuration>
  <system.webServer>
    <iisnode nodeProcessCommandLine="&quot;%programfiles%\nodejs\18.3.0\node.exe&quot;" />
    <!-- 保留原有其他配置 -->
  </system.webServer>
</configuration>

注意:路径中的版本号需与Azure实际安装的Node版本一致,可通过Kudu查看C:\Program Files\nodejs目录下的版本文件夹

3. 清理部署包中的本地依赖

部署前删除本地node_modules文件夹,让Azure重新安装适配环境的依赖。可在部署脚本(如GitHub Actions、Azure DevOps Pipeline)中添加清理步骤,或在package.json的build命令中前置清理操作

4. 检查TypeScript编译输出

本地执行tsc命令,查看build目录下的输出文件:

  • 确认const是否被转译为var(因target设置为es5)
  • 若存在未转译的ES6语法,检查是否有未被TypeScript处理的JS文件,或调整allowJs配置

内容的提问来源于stack exchange,提问作者Mackey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:55:23