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

标签 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 使用支持 AMD 的 Webpack 2 构建项目,我想我可以像这样导入它:

import * as MyModule from './mymodule.js';

...但这不起作用,它会触发一个错误,即 mymodule.js 不是一个模块。

有什么想法(或变通方法)可以导入这个遗留模块吗?

最佳答案

我能够加载 amd 模块。

这里是 TS:

import * as MyModule from './mymodule.js';

console.log('my value is', MyModule.value);

我的module.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));

关于angular - 如何在 Angular 4.x (Angular Cli) App 中导入 RequireJS (AMD) 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44115591/

相关文章:

requirejs - 使用 RequireJS for CDN 避免 URL 缓存破坏参数

javascript - 关于requirejs异步

angular-cli - 为信号器设置代理后,Angular 5.1.1 无限刷新循环?

javascript - 如何使用 Firebase 在 Ionic 3 中通过参数检索数据

html - 如何在 Angular 中使用自定义管道将秒数转换并显示为年、月、日?

css - Angular-gridster2,第一个添加的元素占用所有网格空间,直到刷新页面

javascript - RequireJS 依赖顺序

angular - 将现有的 Angular 2 项目转换为使用 Angular CLI

angular - Electron + Angular CLI如何使用 Electron 打包程序打包dist

css - 如何使用预建的 Angular Material 主题的颜色?