Node.js ESM模式下使用env-var报env.get is not a function错误
报错根因
env-var@7.1.1 在ESM规范下采用默认导出方式暴露核心实例,当前代码使用import * as env from "env-var"的命名空间导入写法,拿到的是包含所有导出属性的模块包装对象,并非env-var直接导出的可调用实例,该对象本身不存在get方法,因此触发TypeError: env.get is not a function运行时错误。
修复方案
修改index.js中的依赖导入语句,使用默认导入写法即可:
// 替换原有错误的导入语句 import env from "env-var" const PORT = env.get('PORT').default('5432').asString(); console.log(PORT)
如果需要保留命名空间导入的写法,需要手动读取模块的default属性获取核心实例:
import * as envModule from "env-var" const env = envModule.default const PORT = env.get('PORT').default('5432').asString(); console.log(PORT)
验证方式
修改完成后执行node index.js,在未手动配置PORT环境变量的场景下,会正常输出默认值5432,无运行时报错。
内容的提问来源于stack exchange,提问作者Eyal Solomon
相关产品推荐
相关产品推荐

