Angular 5.2.9集成Noty遇AOT编译TS1202错误求助
解决Angular 5.2.9中Noty AOT构建的TS1202错误
你的问题核心在于AOT编译对ES模块规范的严格校验——项目运行时用CommonJS风格的import Noty = require('noty')能正常工作,但AOT构建会强制遵循ES模块标准,因此触发了TS1202错误。
直接把导入方式改成ES模块兼容的写法就能解决问题:
import { Injectable } from '@angular/core'; import * as Noty from 'noty'; @Injectable() export class NotificationService { private noty(options: any) { return new Noty(options).show(); } // 你的其他通知方法... }
补充优化建议:
- 类型提示支持:如果想要更友好的代码类型提示,建议安装Noty的类型定义包:
npm install @types/noty --save-dev - 极端类型问题处理:如果安装类型定义后仍出现类型报错,可以临时用类型断言绕过:
不过这种情况比较少见,通常return new (Noty as typeof Noty.default)(options).show();import * as配合@types包就能正常工作。
修改完成后,再执行npm run build:aot应该就能顺利通过编译了。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

