我正在试验Angular 2.我使用npm start在Chrome中创建一个实时编码环境,我看到了不寻常的行为. 我的代码库的早期版本在文件A.service.ts中显示如下: export class AService{ constructor( private http : H
我的代码库的早期版本在文件A.service.ts中显示如下:
export class AService{ constructor( private http : Http ){} test( valueA : string, valueB : string ){ var dataObj = { valueA, valueB } console.log( dataObj ); console.log( this.http ); } }
运行我的程序后,控制台将成功显示两个对象.第一个对象显示值“valueA”和“valueB”,第二个对象是一个Http对象,向我展示我的服务正确加载,并且使用期望值调用该方法.为了将来参考,我们将此控制台日志模式称为“输出A”.
我改变了我的服务定义.我改了几次.每次保存新版本的文件时,应用程序都会重新加载.在每个版本上,我都尝试将代码和控制台输出添加到服务对象测试方法中.但是,在每次迭代时,只会出现“输出A”.
我删除了测试方法的所有原始行,然后再次运行代码,仍然看到“输出A”.
我在检查器中执行代码执行,检查器逐行检查新代码,现在看起来像这样:
export class AService{ constructor( private http : Http ){} test( valueA : string, valueB : string ){ console.log( "Testing AService. Method called successfully."); } }
调试行告诉我,执行的下一个命令应该在控制台上输入字符串“Testing AService …”,但是不是这样,我看到了我之前实现的“输出A”.我检查了.ts文件,我检查了.js文件,并且都显示了新的代码库. Chrome显示新的代码库,但控制台正在从OLD代码库接收日志消息.
我用Ctrl-C来关闭npm,再次调用npm start,我仍然看到旧代码库的输出….
这对我来说真是令人困惑!关于可能发生的事情的任何想法?
浏览器缓存擦除之后的屏幕截图,然后是系统重启:
更新
重新启动系统并擦除所有缓存后,我再次搜索了所有.js文件,发现我的原始代码库实际上是在.js文件中.我的问题的答案似乎在于删除这些文件然后重新启动NPM ….在监视模式下运行TSC应用程序时,某些事情阻止了NPM覆盖JavaScript文件.
我的问题的答案似乎在于删除这些文件然后重新启动NPM ….在监视模式下运行TSC应用程序时,某些事情阻止了NPM覆盖JavaScript文件.请参阅原始问题中的更新.