无法在打字稿中加载“十字路口”作为requirejs AMD模块

时间:2015-03-13 21:51:36

标签: requirejs typescript definitelytyped

我正在尝试将javascript应用程序移植到使用requirejs的typescript。我在DefinitelyTyped使用@mhegazy中的typedefinition:https://github.com/borisyankov/DefinitelyTyped/tree/master/crossroads Typescript编译器给我以下错误......

错误TS2307:找不到外部模块的“十字路口”。

这完全适用于使用“定义”的javascript。

我刚用这个库作为一个完整的例子。我错过了什么?如果TSC真的关注requirejs配置,很难挖掘文档。我知道十字路口取决于js信号。 定义和ts文件在不同目录中是否存在问题? 从我所读的here开始,我甚至不必提出参考评论。但是,如果我然后尝试使用相对路径,它也找不到它。

这是我的应用结构

  • index.html

申请ts / js

  • 应用程序/ config.ts
  • 应用程序/ bootup.ts
  • 应用程序/ someclass.ts

打字稿定义

  • typings / crossroads / crossroads.d.ts
  • 分型/ requirejs / require.d.ts

Javascript库

  • bower_components /十字路口/ DIST / crossroads.js
  • bower_components / requirejs / require.js

index.html此脚本包含

<script data-main="app/config" src="bower_components/requirejs/require.js>
</script>

/app/config.ts:

/// <reference path="../typings/requirejs/require.d.ts" />
(function () {
    requirejs.config({
        baseUrl: ".", 
        paths: { 
            "crossroads": "bower_components/crossroads/dist/crossroads"
        }
    })
    require(["app/bootup"]);
}) ();

/app/someclass.ts:

/// <reference path="../typings/crossroads/crossroads.d.ts" />
import crossroads = require("crossroads");

class SomeClass{
 // do something with crossroads
}

1 个答案:

答案 0 :(得分:1)

import crossroads = require("crossroads");

要使用import/require,您需要:

  • 指向 TypeScript 文件的相对路径。
  • 声明的外部模块。

在您的情况下,您需要为TypeScript声明一个外部模块以了解它。 E.g:

declare module 'crossroads'{
    export = crossroads;
} 

更新我已更新定义,因此您无需执行此操作:https://github.com/borisyankov/DefinitelyTyped/pull/3866享受!