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

ES Module导出重命名为非有效标识符字符串字面量:报错原因与解决

问题解答

核心结论

是的,Node.js支持该ES模块标准语法,但你使用的TypeScript 4.8.4版本暂不支持这种用字符串字面量将导出/导入名称重命名为非有效标识符的写法。

原因分析

  1. Node.js的支持情况:export { myFunction as "my-function" }这类语法是ES模块的标准特性,Node.js从v14.x版本开始就已经完整实现,你的v16.15.0版本自然兼容,因此直接运行代码能正常输出结果。
  2. TypeScript的支持延迟:TypeScript直到5.0版本才正式支持导出/导入时用字符串字面量作为别名的语法,你当前使用的4.8.4版本早于该版本,所以TS会将其判定为语法错误,在VSCode中给出报错提示。

解决办法

方案1:升级TypeScript版本

将TypeScript升级到5.0或更高版本,即可消除VSCode的报错提示,同时保留原有语法:

npm install typescript@latest --save-dev

升级完成后,VSCode的TS语言服务会自动识别该语法,不再报错。

方案2:不升级TS,改用替代写法

如果暂时无法升级TS版本,可以通过以下方式实现导出非有效标识符的需求:

  • 导出侧(test.js):
// 方式1:直接导出带特殊字符的变量
export const "my-function" = function myFunction() {
  return 1;
};

// 方式2:通过对象导出
const exportObj = {
  "my-function": function myFunction() {
    return 1;
  }
};
export default exportObj;
  • 导入侧:
// 对应方式1的导入
import * as test from "./test.js";
console.log(test["my-function"]());

// 对应方式2的导入
import test from "./test.js";
console.log(test["my-function"]());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:45:31