TypeScript+Node.js模块导出异常:请求模块无指定导出成员
Node.js + TypeScript 模块导出异常排查
离开Node.js与TypeScript领域数年后,我正在搭建基于Node、Express、Mongoose和TypeScript的基础CRUD REST服务,重新熟悉相关技术。期间遇到一个奇怪的问题:代码原本运行正常,但随机修改某些内容后,会突然抛出如下错误:
SyntaxError: The requested module '../utils/LoggerClass' does not provide an export named 'LoggerClass'
(其他类/文件也会出现类似错误)
尽管LoggerClass文件明确导出了同名类(此前刚正常运行),且WebStorm编辑器未提示任何错误。删除源码目录下所有.js文件(比如执行find . -name "*.js" -type f | xargs rm)后,再次运行可暂时解决问题,但后续修改某些文件会再次触发该问题,需要重复删除操作。
相关配置详情
package.json 关键配置
"scripts": { "start": "node src/server.ts" }, "type": "module", "module": "esnext",
环境版本
- Node.js: v22.6.0
- TypeScript (tsc): v5.5.4
- WebStorm: 2024.2 (MacOS)
WebStorm 具体配置
- TypeScript设置:使用Node.js 22.6.0作为解释器,内置TypeScript 5.4.3,启用TypeScript语言服务、项目错误提示与建议,关闭“服务器类型依赖”与“更改时重新编译”
- Node.js设置:使用Node.js 22.6.0
- 运行配置:Node.js 22.6.0,TypeScript加载器为内置tsx,节点参数
--require ts-node/register
示例代码
LoggerClass.ts 开头代码:
import { ILogger } from "../commonCode/misc/ILogger"; export class LoggerClass implements ILogger { public traceOn = true; constructor(public moduleName: string, public debugMode: boolean) { }
引用该类的代码:
import { LoggerClass } from "../utils/LoggerClass";
WebStorm 实际运行命令
/Users/USERNAME/.nvm/versions/node/v22.6.0/bin/node --import file:/Applications/WebStorm.app/Contents/plugins/nodeJS/js/ts-file-loader/node_modules/tsx/dist/loader.cjs --require ts-node/register /Users/USERNAME/WebstormProjects/APP-NAME/src/server.ts
tsconfig.json 核心配置
{ "compilerOptions": { "target": "es2016", "module": "commonjs", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true } }
请问该问题的可能原因是什么?
内容的提问来源于stack exchange,提问作者Doug
相关产品推荐
相关产品推荐

