gpt4 book ai didi

javascript - RequireJS:找不到模块 'domReady'

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:19 25 4
gpt4 key购买 nike

我有一个很烦人但可能很简单的问题,我就是想不通。

在 TypeScript 文件中,我定义了以下行:

import test1 = require('domReady');

这个“domReady”模块在作为 RequireJS 入口点加载的 main.js 文件中定义。定义如下:

require.config({    
paths: {
'domReady': '../domReady',
}

但是...在我的 TypeScript 文件中,我只是得到一个“找不到模块‘domReady’”,这让我发疯,因为我已经仔细检查了文件的路径,它确实位于正确的位置正确的名字。此外,我相当确定 domReady.js 文件与 AMD 兼容,因此它应该定义一个外部模块就好了! (domReady GitHub Link)。

我真的无法理解为什么在导入语句中找不到模块。有没有人知道问题可能是什么?

编辑 1

目录结构如下:

.
+--App
| +--main.js
| +--dashboard.js
+--domReady.js

导入语句发生在“dashboard.js”文件中,require.js 的配置发生在“main.js”中。

最佳答案

为了让 TypeScript 找到模块,您必须实际向 TypeScript 提供模块信息。

typescript doesn’t yet support AMD-style paths configuration ,它永远不会在您的 JavaScript 代码中使用调用(如 require.config())来配置自身,并且在编译时它不会将磁盘上的 JavaScript 文件视为模块。所以现在,您实际上并没有为编译器提供成功处理 import 语句所需的信息。

为了让您的代码编译无误,您必须在单独的 d.ts 文件中为您在编译器中导入的模块显式声明环境声明:

// in domReady.d.ts
declare module 'domReady' {
function domReady(callback: () => any): void;
export = domReady;
}

然后,将此 d.ts 包含在您传递给编译器的文件列表中:

tsc domReady.d.ts App/main.ts App/dashboard.ts

您导入的任何其他第三方 JavaScript 代码也需要环境声明才能成功编译; DefinitelyTyped为其中许多提供了 d.ts 文件。

关于javascript - RequireJS:找不到模块 'domReady',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34335373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com