对于上下文(尽管不是那么重要(,我试图将svgmorpheus导入打字稿项目(Angular 2(。
svgmorpheus只是一个全球。它被称为:
var SVGMorpheus = (function(){....code...})())
即。标准的老式JavaScript IIFE分配给全球。在我的项目中,我试图这样导入它:
import * as SVGMorpheus from "./path/to/svg-morpheus"
这可以正常工作,没有错误,但是svgmorpheus只是一个空的对象。
console.log(SVGMorpheus); //Outputs "{}"
。
任何尝试使用它的尝试都会导致错误。
有人知道我在做什么吗?我还添加了一个Typings.d.ts文件,该文件无济于事。svgmorpheus不支持打字或任何形式的UMD形式。
这不是TypesCIPRT的特殊问题,而是在所有要导入/导出文件的情况下都可能发生的一般问题。答案是,并非所有JavaScript文件都准备好被导出。特别是在这种情况下,答案是"否"。我要假设您正在使用WebPack,如果您不建议您最终使用WebPack。
从WebPack Guys(https://github.com/webpack/docs/wiki/wiki/shimming-modules(撰写的官方文件中,有一种方法可以解决此情况,其中文件不支持现代技术进出口。
您需要" enfort-loader"才能使您的iife全局模块准备出口到其他脚本。
var SVGMorpheus = require('./path/to/svg-morpheus'); // Wrong
var SVGMorpheus = require('exports-loader?SVGMorpheus!./path/to/svg-morpheus'); // Good
希望这个答案您的问题。谢谢。
这是一个角度CLI问题。我没有在编译器上注册脚本。将node_module添加到app object中的脚本阵列中,angular-cli.json文件中的功能:
{
...
"apps": [
...app definition stuff...
"scripts": [
"path/to/external/module"
]
]
}
请注意,这应该适用于任何外部IIFE型导入。不需要其他代码更新(原始邮政编码工作(。