带有Typescript的headloom.js可以';我找不到模块
有人在TypeScriptLand工作过吗?在谷歌上四处搜索,结果似乎不是这样 我想把这个库合并到我的Browserify项目中,但没有任何运气 我有这个headloom.js的v0.9.3的打字文件带有Typescript的headloom.js可以';我找不到模块,typescript,browserify,headroom.js,Typescript,Browserify,Headroom.js,有人在TypeScriptLand工作过吗?在谷歌上四处搜索,结果似乎不是这样 我想把这个库合并到我的Browserify项目中,但没有任何运气 我有这个headloom.js的v0.9.3的打字文件 节点模块安装为node\u modules/headloom.js/(是的,它是一个文件夹;我以前从未见过以这种方式命名的节点模块。) 根据package.json,headloom.js的主要条目是node_modules/headloom.js/dist/headloom.js 当我尝试
- 节点模块安装为
(是的,它是一个文件夹;我以前从未见过以这种方式命名的节点模块。)node\u modules/headloom.js/
- 根据package.json,headloom.js的主要条目是
node_modules/headloom.js/dist/headloom.js
{ [TypeScript error: resources/assets/typescript/app.ts(12,24): Error TS2307: Cannot find module 'headroom.js'.]
message: 'resources/assets/typescript/app.ts(12,24): Error TS2307: Cannot find module \'headroom.js\'.',
fileName: 'resources/assets/typescript/app.ts',
line: 12,
column: 24,
name: 'TypeScript error' }
我尝试过所有这些排列:
import {Headroom} from "headroom.js"; //nope
import {Headroom} from "headroom\.js"; //nope
import {Headroom} from "Headroom\.js"; //nope
import {Headroom} from "headroomjs"; //nope
import {Headroom} from "headroomjs"; //nope
import {Headroom} from "headroom"; //nope
import {Headroom} from "Headroom"; //nope
import * as headroom from "headroom.js"; // nope
输入文件肯定是正确导入的
IDE表示它可以找到目录:
我做错了什么
编辑13-08-2015
一,。
app.ts从typings
目录中提取打字,如下所示:
/// <reference path="../../../typings/index.d.ts" />
//
index.d.ts
包含这些类型
///
///
///……等等。。。
///
净空不包括任何打字。这就是TypeScript找不到“目录”的原因。你可以做两件事: (1) 为净空添加您自己的
.d.ts
文件,并确保它在运行时可用
(2) 使用const headloom=require('headloom.js')代码>导入它。根据browserify配置,在构建项目时,它应该包括净空。请注意,您将不会有任何净空打字
我们将(2)与webpack一起使用,效果很好。当您编写require('foo')
webpack将尝试查找名为“foo”的npm包,并将其添加到您的项目中。TypeScript可以使用require,因为它是在包含的.d.ts
文件之一(例如node.js)中定义的。当然,你会错过TypeScript的自动完成功能等。净空不包括任何打字。这就是TypeScript找不到“目录”的原因。你可以做两件事:
(1) 为净空添加您自己的.d.ts
文件,并确保它在运行时可用
(2) 使用const headloom=require('headloom.js')代码>导入它。根据browserify配置,在构建项目时,它应该包括净空。请注意,您将不会有任何净空打字
我们将(2)与webpack一起使用,效果很好。当您编写require('foo')
webpack将尝试查找名为“foo”的npm包,并将其添加到您的项目中。TypeScript可以使用require,因为它是在包含的.d.ts
文件之一(例如node.js)中定义的。但是当然,您将丢失TypeScript的自动完成功能等。搜索headloom.js的打字:
typings search headroom
查找需要使用此命令安装的一组声明:
typings install dt~headroom --global
安装坚持使用--global
选项,这是第一个提示。安装的打字机是全球的;它们不是模块的类型(在.d.ts
中没有定义模块)。因此,TypeScript不会将它们与导入的或必需的模块关联起来
要使用已安装的打字,您必须使用require
导入模块,然后需要设置一个与打字中声明的类匹配的全局(您提到您正在使用Browserify,因此您应该能够使用global
;窗口
也可以工作):
看看dist/headloom.js,很明显它可以通过AMD、CommonJS或普通JavaScript使用。为了反映这一点,我想Headroom.js
的打字声明的作者已经将其全球化了。搜索Headroom.js的打字:
typings search headroom
查找需要使用此命令安装的一组声明:
typings install dt~headroom --global
安装坚持使用--global
选项,这是第一个提示。安装的打字机是全球的;它们不是模块的类型(在.d.ts
中没有定义模块)。因此,TypeScript不会将它们与导入的或必需的模块关联起来
要使用已安装的打字,您必须使用require
导入模块,然后需要设置一个与打字中声明的类匹配的全局(您提到您正在使用Browserify,因此您应该能够使用global
;窗口
也可以工作):
看看dist/headloom.js,很明显它可以通过AMD、CommonJS或普通JavaScript使用。为了反映这一点,我想headloom.js
的打字声明的作者已经让它们全球化了。我做了一些类似于@Sebastian answer的东西来让它工作。在src/
文件夹中,创建了一个名为headloom.js.d.ts
的新文件,其中只包含:
声明模块'headloom.js';
这就解决了问题。在我的功能组件中,我能够做到:
从“headloom.js”导入净空;
导出常量导航:React.FC=()=>{
React.useffect(()=>{
let headloom=新的净空(document.getElementById(“navbar main”);
headloom.init();
},[类别];
回报率(…);
}
我做了一些类似于@Sebastian的回答来让它工作。在src/
文件夹中,创建了一个名为headloom.js.d.ts
的新文件,其中只包含:
声明模块'headloom.js';
这就解决了问题。在我的功能组件中,我能够做到:
从“headloom.js”导入净空;
导出常量导航:React.FC=()=>{
React.useffect(()=>{
let headloom=新的净空(document.getElementById(“navbar main”);
headloom.init();
},[类别];