5

我在尝试使用 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 arguments: -e "$(ItemPath)" --sourcemap

4

4 回答 4

3

我相信问题出在您正在使用的命令本身,或者至少是您传入的选项之一。“-e”告诉编译器“在编译后执行脚本”。因此,您看到的“Microsoft JScript 运行时错误:'$' 未定义”不是编译错误,而是文件编译后出现并正在执行的运行时错误。

希望有帮助!

于 2012-12-14T12:39:56.973 回答
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>
于 2012-12-12T19:02:41.993 回答
0

- 删除了我原来的答案..

你到底从哪里得到错误:“tsc.js(23915, 17) Microsoft JScript runtime error: '$' is undefined”?

本主题中还有一个很好的大纲,介绍了如何让编译器在构建时编译您的 .ts 文件:http: //typescript.codeplex.com/discussions/403394 之后,您可以保持 .ts 文件的构建操作“打字稿编译”

于 2012-12-12T22:54:36.570 回答
0

不知道我们不应该重复答案...我对旧答案进行了一些更改。好的,我的解决方案是:

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

  1. 从 VS 2015 中的 NuGet 管理器下载所有这些库。 在此处输入图像描述

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

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 文件。首先将这些行添加到顶部以引用您的库。您可能需要更改路径。

/// <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
    
        }
    
于 2016-06-12T02:09:51.623 回答