Node.js 16部署Azure App Service时导入JSON文件遇Unexpected identifier错误
解决Node.js 16.13.1部署Azure App Service的JSON导入语法错误
问题原因
Node.js 16.x版本中,import ... assert {type: "json"}属于实验性语法特性,默认并未启用,Azure App Service的默认Node启动环境不会自动加载该实验性标志,导致语法解析失败。
解决方案
方案1:启用实验性JSON模块标志
修改Azure App Service的启动命令,添加--experimental-json-modules参数:
- 登录Azure门户,进入你的App Service实例
- 导航至「配置」→「常规设置」
- 在「启动命令」输入框中,替换为包含标志的启动命令(假设你的入口文件是
index.js):node --experimental-json-modules index.js - 保存配置并重启App Service
方案2:改用非实验性方式读取JSON文件
如果不想依赖实验性特性,推荐使用Node.js内置模块读取JSON:
- CommonJS环境(package.json无
"type": "module"):const fs = require('fs'); const myToken = JSON.parse(fs.readFileSync('./MyToken.json', 'utf8')); - ES模块环境(package.json有
"type": "module"):import fs from 'fs/promises'; const myToken = JSON.parse(await fs.readFile('./MyToken.json', 'utf8'));
方案3:升级Node.js版本(可选)
如果可以升级,Node.js 17.1+开始assert {type: "json"}不再是实验性特性,默认支持。你可以在Azure App Service的「配置」→「常规设置」中切换Node.js版本至17.x或更高(需确认你的应用兼容新版本)。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

