TypeScript开发环境出现TS2695逗号运算符左侧无副作用报错
问题根因
这个报错是开发环境运行TS的工具ts-node触发了noUnusedExpressions校验规则,识别到代码转译后生成的逗号运算符左侧的0没有被使用也没有副作用,因此抛出错误。你直接执行tsc编译时默认没有开启这个规则,所以不会报错;注释掉路由注册代码后snippets.ts模块不会被导入,也就不会触发该文件的编译校验,符合你遇到的现象。
解决方案
按优先级从高到低尝试即可:
方案1:清理ts-node缓存
多数情况是缓存导致的校验异常,先执行清理缓存命令再重启服务:
npx ts-node --clear-cache npm run dev:server
方案2:关闭对应校验规则
在tsconfig.json的compilerOptions中新增配置,关闭该校验规则即可:
{ "compilerOptions": { // 保留原有其他配置不变 "noUnusedExpressions": false } }
方案3:调整Router调用方式
修改src/routes/snippets.ts的导入与调用写法,避免转译生成触发校验的逗号运算符代码:
// 将原有的命名导入Router改为导入整个express实例 import express from 'express'; import { createSnippet } from '../controllers/snippets'; // 改为从express实例调用Router方法 export const snippetRouter = express.Router(); snippetRouter.route('/').post(createSnippet);
方案4:调整开发启动脚本
修改package.json中的dev:server脚本,给ts-node加上仅转译不做类型校验的参数,类型校验可以靠编辑器或单独执行tsc完成:
"dev:server": "nodemon --exec ts-node --transpile-only src/server.ts"
内容的提问来源于stack exchange,提问作者Paul Ulibro
相关产品推荐
相关产品推荐

