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

Node.js严格模式下替代assert导入JSON的方案

Firebase Functions ES模块(strict模式)导入JSON的替代方案

针对你遇到的assert导入JSON被弃用、with在strict模式不支持的问题,以下是几个兼容strict模式的可行方案:

方案1:使用fs模块读取并解析JSON(推荐)

这是最稳妥的方案,完全符合ES模块strict模式要求,且无弃用风险:

import fs from 'fs/promises';
import path from 'path';
import { fileURLToPath } from 'url';

// 解决ES模块中__dirname缺失的问题
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 读取并解析JSON文件
const oAuth2Data = JSON.parse(await fs.readFile(path.join(__dirname, 'client_secrets.json'), 'utf8'));

这种方式通过Node.js内置的文件系统模块读取文件内容,再手动解析为JSON对象,避开了导入断言的兼容性问题,同时完全适配strict模式。

方案2:利用package.json的exports字段(需Node.js 14.13.0+)

如果你的Firebase Functions运行时支持Node.js 14.13.0及以上版本,可以通过配置package.json的exports字段简化导入:

在项目根目录的package.json中添加:

"exports": {
  "./client_secrets": "./client_secrets.json"
}

然后在ES模块文件中直接导入:

import oAuth2Data from './client_secrets';

Node.js会自动识别并解析JSON文件,无需任何断言,完美兼容strict模式。

方案3:混合CommonJS模块包裹(应急方案)

如果上述方案暂时无法实施,可以将JSON导入逻辑封装到CommonJS模块中,再在ES模块里引用:

  1. 创建secrets.cjs文件:
module.exports = require('./client_secrets.json');
  1. 在ES模块文件中导入:
import oAuth2Data from './secrets.cjs';

注意:这种方式会混合模块类型,可能增加项目复杂度,仅作为临时应急方案使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:22:09