如何在 Angular 4.x (Angular Cli) 应用程序中导入 RequireJS (AMD) 模块?
How to import RequireJS (AMD) module in Angular 4.x (Angular Cli) App?
我有一个旧的 JS 文件,用以下 RequireJS (AMD) 模块表示法编写:
define('mymodule', [], function(){
// ... bla bla bla
return {
calculate: function() { return 1 + 1; }
};
});
我正在从另一个使用 RequireJS 的(遗留)项目导入此文件,因此 - 我无法更改使用的模块定义。
我想将其导入到用 TypeScript 编写的 Angular Cli (Angular 4.x) 应用程序中。
由于AngularCli使用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));
我有一个旧的 JS 文件,用以下 RequireJS (AMD) 模块表示法编写:
define('mymodule', [], function(){
// ... bla bla bla
return {
calculate: function() { return 1 + 1; }
};
});
我正在从另一个使用 RequireJS 的(遗留)项目导入此文件,因此 - 我无法更改使用的模块定义。
我想将其导入到用 TypeScript 编写的 Angular Cli (Angular 4.x) 应用程序中。
由于AngularCli使用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));