我有一个遗留的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不是模块的错误.
任何想法(或解决方法)如何导入此旧模块?
解决方法
我能够加载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));