我有一个很烦人,但可能很简单的问题,我就是想不出来。
在TypeScript文件中,我定义了以下行:
import test1 = require('domReady');这个"domReady“模块定义在一个main.js文件中,该文件作为RequireJS的入口点加载。定义如下:
require.config({
paths: {
'domReady': '../domReady',
}然而..。在我的TypeScript文件中,我只是得到了一个“无法找到模块'domReady'”,这让我发疯了,因为我已经两次检查了对文件的修改,并且它确实在正确的位置,有正确的名称。此外,我相当肯定domReady.js文件是兼容的,所以它应该定义一个外部模块非常好!(domReady GitHub链路)。
我真的不明白为什么无法在import语句中找到模块。有人对这个问题有什么想法吗?
编辑1
目录结构如下:
.
+--App
| +--main.js
| +--dashboard.js
+--domReady.js导入语句发生在"dashboard.js“文件中,require.js的配置发生在"main.js”中。
发布于 2015-12-17 20:24:19
为了让TypeScript找到一个模块,您必须实际向TypeScript提供模块信息。
TypeScript 还不支持AMD风格的路径配置。,它从不使用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文件。
发布于 2015-12-17 13:26:52
当路径键和目录名或文件名相同时(在您的例子中是domReady),我曾经遇到过问题。可能不起作用,但值得一试。
任一
'domReadyModule': '../domReady',
require('domReadyModule')或将domReady.js重命名为domReady-1.0.js并使用
'domReady': '../domReady-1.0',
require('domReady')如果这不起作用,我会检查main.js与正在执行require的文件之间的相关目录,或者尝试以同样的方式导入另一个库,或者最后与您正在成功导入的其他库进行比较。
祝你好运,希望你能解决这个问题!
https://stackoverflow.com/questions/34335373
复制相似问题