无法让 "crossroads" 在打字稿中加载为 requirejs AMD 模块
Can't get "crossroads" to load as requirejs AMD module in typescript
我正在尝试将 javascript 应用程序移植到使用 requirejs 的打字稿。我在 DefinitelyTyped 使用来自@mhegazy 的类型定义:https://github.com/borisyankov/DefinitelyTyped/tree/master/crossroads
打字稿编译器给我以下错误...
错误 TS2307:找不到外部模块 'crossroads'。
这在 javascript 中使用 "defines" 完成了所有工作。
我只是用这个库作为一个完整的例子。我错过了什么?如果 TSC 真的关注 requirejs 配置,那么文档很难挖掘。我知道十字路口取决于 js 信号。
定义和 ts 文件位于不同目录中是否存在问题?
根据我所读 here 我什至不必发表参考评论。但是如果我然后尝试使用相对路径,它也找不到它。
这是我的应用结构
- index.html
申请ts/js
- app/config.ts
- app/bootup.ts
- app/someclass.ts
打字稿定义
- typings/crossroads/crossroads.d.ts
- typings/requirejs/require.d.ts
Javascript 图书馆
- bower_components/crossroads/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
}
import crossroads = require("crossroads");
要使用 import/require
,您需要:
- 指向 TypeScript 文件的相对路径。
- 一个声明的外部模块。
在您的情况下,您需要声明一个外部模块,以便 TypeScript 了解它。例如:
declare module 'crossroads'{
export = crossroads;
}
更新 我已经更新了定义,所以你不需要这样做:https://github.com/borisyankov/DefinitelyTyped/pull/3866享受吧!
我正在尝试将 javascript 应用程序移植到使用 requirejs 的打字稿。我在 DefinitelyTyped 使用来自@mhegazy 的类型定义:https://github.com/borisyankov/DefinitelyTyped/tree/master/crossroads 打字稿编译器给我以下错误...
错误 TS2307:找不到外部模块 'crossroads'。
这在 javascript 中使用 "defines" 完成了所有工作。
我只是用这个库作为一个完整的例子。我错过了什么?如果 TSC 真的关注 requirejs 配置,那么文档很难挖掘。我知道十字路口取决于 js 信号。 定义和 ts 文件位于不同目录中是否存在问题? 根据我所读 here 我什至不必发表参考评论。但是如果我然后尝试使用相对路径,它也找不到它。
这是我的应用结构
- index.html
申请ts/js
- app/config.ts
- app/bootup.ts
- app/someclass.ts
打字稿定义
- typings/crossroads/crossroads.d.ts
- typings/requirejs/require.d.ts
Javascript 图书馆
- bower_components/crossroads/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
}
import crossroads = require("crossroads");
要使用 import/require
,您需要:
- 指向 TypeScript 文件的相对路径。
- 一个声明的外部模块。
在您的情况下,您需要声明一个外部模块,以便 TypeScript 了解它。例如:
declare module 'crossroads'{
export = crossroads;
}
更新 我已经更新了定义,所以你不需要这样做:https://github.com/borisyankov/DefinitelyTyped/pull/3866享受吧!