VS编译的TypeScript代码无法在Chrome / FF中运行?

时间:2013-04-03 16:57:26

标签: iis utf-8 visual-studio-2012 typescript web-essentials

更新

  

你可以阅读下面的所有细节..但基本上,现在重要的是我   做VS2012 Typescript正在编译和保存ANSI文件...

     

我可以手动将文件重新保存为UTF-8,一切正常..

     

我在Windows 8上,我已经在5个不同的版本上重现了这个问题   5个不同城市的5个不同开发商使用的机器......

     

唯一的共性是Windows 8

我有一个示例项目在IE中运行良好,但在Chrome或FF中根本没有。看起来文件编码不正确,IE正在计算它,但Chrome和FF不是......

例如,以下是编译的JavaScript文件的前几个喜欢

/// <reference path="../Framework/Core.ts" /> 
var MVVM; 
(function (MVVM) {
var Application = (function () {
    function Application() {
        this.core = undefined;
        this.templatePath = "Atlatl/Templates/";
        this.viewPath = "Atlatl/Views/";
        this.dependentScriptsPath = "Scripts/";
        this.viewModelsPath = "Atlatl/App/ViewModels/";
        this.frameworkPath = "Atlatl/Framework/";
        this.pages = {
        };

这就是Chrome“认为”它从IIS(8&amp; 8 express)接收的内容:

  

爼晥牥湥散潆瑡㵨⸢⼮墙浡睥牯⽫潃敲琮≳⼠ാ瘊牡䴠噖㭍਍昨湵琐潩䴨噖⥍笠਍††庆⁲灁汰捩瑡潩 ‽昨湵琐潩⤨笠

更新

以下是文件

的chrome调用的标题

- 请求 -

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:localhost:40665
If-Modified-Since:Wed, 03 Apr 2013 16:33:17 GMT
If-None-Match:"153551f28830ce1:0"
Referer:http://localhost:40665/
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31

- 响应 -

Accept-Ranges:bytes
Date:Wed, 03 Apr 2013 17:06:28 GMT
ETag:"153551f28830ce1:0"
Server:Microsoft-IIS/8.0
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcUHJvamVjdHNcUmFuZG9tV29ya1xNdmNBcHBsaWNhdGlvbjEyXE12Y0FwcGxpY2F0aW9uMTJcQXRsYXRsXEFwcFxhcHAuanM=?=
那里没什么好笑的......

我尝试了所有以下编译方法,各种各样的失败,所有这些都在同一行

1)只需在VS

中使用TypeScript编译器

2)使用Web Essentials

A)有和没有UTF-8 BOM标志设置为真

B)在构建

时有和没有重新编译

我可以提供一个示例项目,或者如果您完成本教程,您将看到我在谈论的内容https://github.com/CatapultSystems/atlatl/wiki/Visual-studio-hello-world

对于可能导致这种情况的原因,我感到非常难过......而且我的所有人都知道该怎么做......

1 个答案:

答案 0 :(得分:2)

我不认为它与编译或TypeScript有任何关系。

生成的JavaScript文件没有BOM。

回复应包含Content-Length: XXXXContent-Type: application/javascript - 而您的回复不应包含304 Not Modified200 OK。它似乎是var dummyChars = "Ù"; 响应,而不是{{1}}响应。

您是否尝试使用Ctrl + F5在Chrome中强制刷新?

<强>更新

在记事本中重新保存选择UTF-8的JavaScript文件只添加BOM(假设JS文件的内容是7位ASCII)。

您应该能够生成相同的效果设置Web Essentials以添加BOM或添加虚拟字符串常量

{{1}}

到你的TypeScript文件。执行此操作后,JavaScript文件应与从记事本中保存的JavaScript文件相同。