首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RequireJS:找不到模块“domReady”

RequireJS:找不到模块“domReady”
EN

Stack Overflow用户
提问于 2015-12-17 13:07:30
回答 2查看 891关注 0票数 3

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

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

代码语言:javascript
运行
复制
import test1 = require('domReady');

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

代码语言:javascript
运行
复制
require.config({    
    paths: {      
        'domReady': '../domReady',
    }

然而..。在我的TypeScript文件中,我只是得到了一个“无法找到模块'domReady'”,这让我发疯了,因为我已经两次检查了对文件的修改,并且它确实在正确的位置,有正确的名称。此外,我相当肯定domReady.js文件是兼容的,所以它应该定义一个外部模块非常好!(domReady GitHub链路)。

我真的不明白为什么无法在import语句中找到模块。有人对这个问题有什么想法吗?

编辑1

目录结构如下:

代码语言:javascript
运行
复制
.
+--App
| +--main.js
| +--dashboard.js
+--domReady.js

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-17 20:24:19

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

TypeScript 还不支持AMD风格的路径配置。,它从不使用JavaScript代码中的调用(如require.config())来配置自己,而且在编译时不会将磁盘上的JavaScript文件视为模块。所以现在,您并没有为编译器提供成功处理import语句所需的信息。

要使代码没有错误地编译,必须在一个单独的d.ts文件中显式声明要在编译器中导入的模块的环境声明:

代码语言:javascript
运行
复制
// in domReady.d.ts
declare module 'domReady' {
  function domReady(callback: () => any): void;
  export = domReady;
}

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

代码语言:javascript
运行
复制
tsc domReady.d.ts App/main.ts App/dashboard.ts

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

票数 4
EN

Stack Overflow用户

发布于 2015-12-17 13:26:52

当路径键和目录名或文件名相同时(在您的例子中是domReady),我曾经遇到过问题。可能不起作用,但值得一试。

任一

代码语言:javascript
运行
复制
'domReadyModule': '../domReady',
require('domReadyModule')

或将domReady.js重命名为domReady-1.0.js并使用

代码语言:javascript
运行
复制
'domReady': '../domReady-1.0',
require('domReady')

如果这不起作用,我会检查main.js与正在执行require的文件之间的相关目录,或者尝试以同样的方式导入另一个库,或者最后与您正在成功导入的其他库进行比较。

祝你好运,希望你能解决这个问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34335373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档