如何在Node.js中运行psn-api示例脚本?解决exports未定义错误
解决psn-api脚本运行报错的具体步骤
1. 修正依赖安装(若之前安装命令有误)
之前的安装命令包含冗余的i,重新执行正确的安装命令:
npm uninstall psn-api npm install psn-api --save
2. 调整tsconfig.json核心配置
打开tsconfig.json,确保以下关键配置与ES模块规则对齐(其余无关配置可保留默认):
{ "compilerOptions": { "target": "ES2020", "module": "ESNext", "moduleResolution": "NodeNext", "outDir": "./dist", "esModuleInterop": true, "strict": true, "skipLibCheck": true }, "include": ["index.ts"], "exclude": ["node_modules"] }
module: "ESNext":强制TypeScript编译输出ES模块语法moduleResolution: "NodeNext":适配Node.js的ES模块解析逻辑outDir:指定编译产物输出到dist目录,避免源码与编译文件混淆
3. 修正示例代码的导入导出语法
确保index.ts使用ES模块规范的语法,替换CommonJS的require和exports:
- 导入psn-api模块:
import { exchangeCodeForAccessToken, getTrophiesForTitle } from "psn-api";
- 若示例代码存在导出逻辑,替换
module.exports为ES模块的export:
// 替换 exports.run = ... 为 export async function run() { // 你的业务逻辑代码 }
4. 编译并运行脚本
执行编译命令:
npx tsc
编译完成后,运行dist目录下的产物文件:
node dist/index.js
错误原因说明
你遇到的ReferenceError: exports is not defined in ES module scope,是因为package.json设置"type":"module"后,Node.js会将所有.js文件识别为ES模块,但TypeScript编译产物仍使用CommonJS的exports语法,两者规则冲突导致报错。上述配置通过强制TypeScript输出ES模块语法,实现与Node.js模块规则的完全对齐。
内容的提问来源于stack exchange,提问作者Nealbo
相关产品推荐
相关产品推荐

