“使用Typescript和jQuery时,Microsoft JScript运行时错误:'$'未定义”

时间:2012-12-12 18:57:12

标签: jquery typescript

我在使用Typescript尝试一个简单的jQuery示例时遇到此错误:

“tsc.js(23915,17)Microsoft JScript运行时错误:'$'未定义”

我的整个.ts文件:

/// <reference path="scripts/jquery-1.8.d.ts" />

$(document).ready(function () {});

jquery-1.8.d.ts来自DefinitelyTyped,但如果我使用标准的jquery.d.ts,我会得到同样的错误。我没有在引用标记上出现任何错误,它是正确的并且正在找到.d.ts文件。

我显然遗漏了一些基本的东西,我无法弄清楚为什么我会收到这个错误。我安装了VS 2012扩展程序并在jQuery上获得完全自动完成功能...所以当我输入'$'时,我会获得自动完成弹出窗口。生成的.js文件是正确的,没有错。一个更复杂的.ts文件正在正确编译,输出.js文件非常好,所以这更像是一个烦恼而不是错误,我想。或者我因为运行时错误而遗漏了其他错误?

我正在通过在VS中添加“外部工具”进行编译 命令:C:\ Program Files(x86)\ Microsoft SDKs \ TypeScript \ 0.8.1.1 \ tsc.exe 参数:-e“$(ItemPath)” - sourcemap

4 个答案:

答案 0 :(得分:3)

我认为问题在于您正在使用的命令,或者至少传递的一个选项。“ - e”告诉编译器“编译后执行脚本”。所以你看到的,“Microsoft JScript运行时错误:'$'未定义”,不是编译错误,而是在编译文件后正在执行的过程中出现的运行时错误。

希望有所帮助!

答案 1 :(得分:2)

您需要在HTML文件中包含真实的jquery.js,例如:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="myApp.js"></script>

答案 2 :(得分:0)

- 删除了原来的答案..

你究竟在哪里得到错误:“tsc.js(23915,17)Microsoft JScript运行时错误:'$'未定义”?

此主题中还概述了如何让编译器在build上编译.ts文件:http://typescript.codeplex.com/discussions/403394 之后,您可以将.ts文件的构建操作保留在“TypeScriptCompile”

答案 3 :(得分:0)

不知道我们不应该重复答案......我已经改变了一点我的旧答案。好的,我的解决方案是:

我正在使用VS 2015,我是typescript的新手。我在我的项目中使用了jQuery和leaflet。

  1. 从VS 2015中的NuGet经理下载所有这些图书馆。 enter image description here

  2. 按照本教程中的说明拖动库文件(.js):

  3. https://taco.visualstudio.com/en-us/docs/get-started-first-mobile-app/

    1. 通过添加这些行来修改index.html文件。

      <link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css" />
      <link rel="stylesheet" href="css/leaflet.css" />
      
      <script src="scripts/jquery-2.2.3.min.js"></script>
      <script src="scripts/jquery.mobile-1.4.5.min.js"></script>
      <script src="scripts/leaflet-0.7.3.min.js"></script>
      
    2. 修改index.ts文件。首先在顶部添加这些行以引用您的库。您可能需要更改路径。

    3. /// <reference path="jquery.d.ts"/>
      /// <reference path="leaflet.d.ts"/>
      
      1. 在onDeviceReady()中添加您自己的代码,否则您可能会收到javascript运行时错误,例如sysmbol“$”未定义。我想这是因为当设备尚未准备好时,代码会尝试加载某些功能。这对我有用。希望它也能帮到你。

            function onDeviceReady() {
        
            document.addEventListener('pause', onPause, false);
            document.addEventListener('resume', onResume, false);
        
        
            var parentElement = document.getElementById('deviceready');
            var listeningElement = parentElement.querySelector('.listening');
            var receivedElement = parentElement.querySelector('.received');
            listeningElement.setAttribute('style', 'display:none;');
            receivedElement.setAttribute('style', 'display:block;');
        
            // your code goes in here
        
            }