繁体   English   中英

如何在 Cordova 插件中包含 npm 依赖项

[英]How to include npm dependencies in your Cordova plugin

我目前正在为 Cordova 实现一个名为core-cordova (源代码)的插件,它也依赖于另一个 NPM 包。

问题是在我的应用程序中安装插件后使用

$ cordova plugin add @aerogearservices/core-cordova

我在控制台上有这个错误:

未找到模块@aerogearservices/core 未找到

我想我必须以某种方式将此依赖项捆绑到插件 JS 文件中,但我还没有找到方法。 到目前为止,我已经尝试使用Browserify将所有内容捆绑到一个dist/core-cordova.js并在Plugin.xml dist/core-cordova.js其定义为:

<js-module src="dist/core-cordova.js" name="MetricsService">
    <clobbers target="cordova.aerogear" />
</js-module>

使用这种方法不会给我带来任何错误,但是aerogear是一个空对象:

// Browser's dev console

> window.cordova.aerogear;
-> {}

> window.cordova.aerogear.MetricsService;
-> undefined

我不知道如何解决这个问题,有什么想法吗?

注意:源代码正在开发中,可能会有更改或错误。

使用webpack捆绑模块解决了空对象问题,并在我的 webpack 配置中将libraryTarget设置为'window'

来自webpack 文档

libraryTarget: 'window' - 入口点的返回值将使用 output.library 值分配给 window 对象。

如果没有此设置,捆绑脚本将无法以可以从我的插件中读取的方式导出。 我认为这是因为当 Cordova 加载 JS 时,它用另一个函数包装它,这防止了脚本在加载时对窗口对象的隐式分配。 此外,由于我的捆绑脚本实际上并未导出任何内容,因此 Cordova 不会从clobbers标签中选取任何内容分配给 window 对象。

请注意,使用此设置,您也可以删除clobbers标签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM