我有一个遗留的JS文件,用以下RequireJS(AMD)模块表示法编写:
define('mymodule', [], function(){
// ... bla bla bla
return {
calculate: function() { return 1 + 1; }
};
});
我从使用RequireJS的另一个(旧版)项目导入此文件,因此 - 我无法更改使用的模块定义。
我想在用TypeScript编写的Angular Cli(Angular 4.x)应用程序中导入它。
由于Angular Cli使用Webpack 2来构建支持AMD的项目,我想我可以像这样导入它:
import * as MyModule from './mymodule.js';
...但是这不起作用,它会触发mymodule.js
不是模块的错误。
任何想法(或解决方法)如何导入此旧模块?
答案 0 :(得分:11)
我可以加载amd模块。
这是TS:
import * as MyModule from './mymodule.js';
console.log('my value is', MyModule.value);
mymodule.js文件:
define(["require", "exports"], function(require, exports){
exports.value = "aaa";
});
和tsconfig.js
"allowJs": true
<强>更新强>
您可以使用webpack提供的System.import。
declare var System: any;
System.import('./mymodule.js')
.then(MyModule=>console.log(MyModule.value));