VS скомпилированный код TypeScript не может работать в Chrome/FF?

Обновить

Вы можете прочитать все подробности ниже.. но в основном, теперь важно, что я делаю VS2012 Typescript компилирует и сохраняет файлы ANSI...

Я могу вручную восстановить файлы как UTF-8, и все работает нормально..

Я на Windows 8, и я воспроизвел эту проблему на 5 разных машинах, используемых 5 разных разработчиков в 3 разных городах...

Единственная общность - это 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 и 8 экспресс):

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

Обновить

А вот и заголовки из вызова хрома для файла

-- Запрос --

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) Просто с помощью компилятора TypeScript в VS

2) Использование веб-Essentials

A) С флагами спецификации UTF-8 и без них, установленными в true

Б) С и без перекомпиляции при сборке

Я могу предоставить пример проекта или, если вы пройдете этот урок, вы увидите, о чем я говорю https://github.com/CatapultSystems/atlatl/wiki/Visual-studio-hello-world

Я полностью озадачен тем, что может быть причиной этого... и я весь в ушах относительно того, что случилось...

1 ответ

Решение

Я не думаю, что это связано с компиляцией или TypeScript.

Сгенерированные файлы JavaScript в порядке без спецификации.

Ответ должен содержать Content-Length: XXXX а также Content-Type: application/javascript - а ваш нет. Кажется 304 Not Modified ответ вместо 200 OK один.

Вы пытались принудительно обновить Chrome, используя Ctrl+F5?

ОБНОВИТЬ

Повторно сохраняя в блокноте файл JavaScript, выбирающий UTF-8, просто добавляет спецификацию (при условии, что содержимое файла JS является 7-битным ASCII).

Вы должны иметь возможность производить тот же эффект, настраивая Web Essentials для добавления спецификации или добавляя фиктивную строковую константу

var dummyChars = "Ù";

в ваш файл TypeScript. После этого файл JavaScript должен быть идентичен сгенерированному сохранению из Блокнота.

Другие вопросы по тегам