Webpack - 在 Angular 2 中调用外部 JS

Posted

技术标签:

【中文标题】Webpack - 在 Angular 2 中调用外部 JS【英文标题】:Webpack - Call external JS in Angular 2 【发布时间】:2017-02-01 23:16:09 【问题描述】:

我希望从 systemJS 换成 webpack。除了让我的一个外部脚本再次运行之外,大多数设置似乎都在工作。

以前使用 systemJS 我有一个设置,我将在我的 index.html 中导入一个外部 .js 脚本。

在我的角度服务中,我可以通过执行以下操作与该脚本进行交互 -

declare var ExternalCode: any;
.
.
.
ExternalCode.RunProcess(data, infomation);

在 webpack 中,我现在有 3 个文件被导出并注入到我的 index.html 中——app.js、vendor.js 和 polyfills.js。在我的供应商文件中,我像这样导入代码,

import "./AppScripts/ExternalCode";

如果我再查看 vendor.js,我会看到我的 ExternalCode 是这样包装的,

(function(module, exports, __webpack_require__) 

   eval( EXTERNAL CODE IS ALL HERE );
)

我似乎无法理解的是我现在如何从我的服务中的 webpack vendor.js 包中调用我的外部代码。无论如何现在可以从我的 Angular 2 服务中导入/运行代码?

我也尝试过在 index.html 文件中再次导入脚本,但是在 webpack-dev-server 上,当我使用 IIS Express 运行项目时,它总是会从用于工作的现有路径抛出 404和 SystemJS。

【问题讨论】:

为什么不试试angular-cli?它会为你处理所有的webpack ceremony 【参考方案1】:

想出了如何使它像以前使用 SystemJS 一样工作。在上面提到的 vendor.ts 中导入脚本,使其包含在 webpack-dev-server 中。

import "./externaljs/ExternalCode.js";

不要将导入视为在 index.html 的相对位置,只需像这样传递完整路径 -

<script src="./src/externaljs/ExternalCode.js"></script>

【讨论】:

以上是关于Webpack - 在 Angular 2 中调用外部 JS的主要内容,如果未能解决你的问题,请参考以下文章

webpack服务器中的rest API调用(来自角度)返回401

在 angular-cli@webpack 中使用 socket.io-client

如何在 angular 2 webpack starter 中使用猫鼬类型

未捕获的 ReferenceError:在 Angular 2 webpack 全局库安装中未定义要求

Angular 2+:IE 11 无法获取未定义或空引用的属性“调用”

angular2-webpack-starter 如何将 NodeJS 服务器添加到项目中