gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:35:03 26 4
gpt4 key购买 nike

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

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

$ cordova plugin add @aerogearservices/core-cordova

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

Uncaught module @aerogearservices/core not found

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

<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

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

NOTE: the source code is a work in progress, there might be changes or errors.

最佳答案

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

来自webpack docs :

libraryTarget: 'window' - The return value of your entry point will be assigned to the window object using the output.library value.

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

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

关于javascript - 如何在 Cordova 插件中包含 npm 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49769333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com