如何在Angular 4.x(Angular Cli)App中导入RequireJS(AMD)模块?

时间:2017-05-22 14:32:20

标签: angular requirejs angular-cli

我有一个遗留的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不是模块的错误。

任何想法(或解决方法)如何导入此旧模块?

1 个答案:

答案 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));