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 は、DefiniteTyped からのものですが、標準の 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

4 に答える 4

3

問題は、使用しているコマンド自体、または渡したオプションの少なくとも 1 つにあると思います。「-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ランタイムエラー:'$' is undefined"?

また、このトピックには、ビルド時にコンパイラーに.tsファイルをコンパイルさせる方法の概要が示されています。http://typescript.codeplex.com/discussions/403394その後 、.tsファイルのビルドアクションを続行できます。 「TypeScriptCompile」

于 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() 内に独自のコードを追加してください。そうしないと、sysmbol "$" is undefined などの javascript ランタイム エラーが発生する可能性があります。これは、デバイスの準備がまだ整っていないときに、コードが何らかの機能をロードしようとするためだと思います。これは私にとってはうまくいきました。それがあなたにも役立つことを願っています。

        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 に答える