我有一个TypeScript类,其类方法返回一个promise:
GetSampleTrackingData() {
return new Promise<TrackingData>((resolve) => {
fs.readFile(path.resolve(__dirname, 'sim1.txt'), (err, data) => {
//Irrelevant code removed
resolve(foo);
});
});
}
当它被调用时,它会抛出错误ReferenceError: fs is not defined
。如果没有包含在诺言中,代码就可以正常运行。
本质上,调用promise时不会保持上下文。 (它是从Express.js调用的)
如果相关,我尝试了几种不同的方法来导入'fs'。
如何让承诺保持上下文?
答案 0 :(得分:1)
我联系了TypeScript团队,结果发现这是在2.7.1中发生的TypeScript错误。修复应该在2.7.2。
使用tsc -w
选项时,如果在promise中使用代码,则会错误地删除某些引用。修复方法是降级到2.6,或使用tsc
而不使用-w
选项。