首页 > 解决方案 > 在 Cordova/Phonegap/Webpack 应用程序中:Uncaught ReferenceError: argscheck is not defined

问题描述

我正在构建我使用创建的 phonegap 应用程序

phonegap create MyApp --template blank

然后后来添加了 Webpack 以将 Typescript 源构建到www目录中。

我现在正在尝试使用Media我使用命令添加的插件

phonegap plugin add cordova-plugin-media

我正在尝试通过导入从我的 Typescript 源中使用它

import * as Media from 'cordova-plugin-media/www/Media';

然后使用

test() {
    var sound = new Media('cdvfile://localhost/www/woopwoop.mp3', ()=>{});
    sound.play();
}

当应用程序运行时,它会出错:

Uncaught ReferenceError: argscheck is not defined
    at Object.cordova/argscheck (argscheck":1)
    at __webpack_require__ (bootstrap:19)
    at Object../node_modules/cordova-plugin-media/www/Media.js (Media.js:22)
    at __webpack_require__ (bootstrap:19)

发生这种情况是因为新添加的媒体插件包含:

var argscheck = require('cordova/argscheck'),
    utils = require('cordova/utils'),
    exec = require('cordova/exec');

因此 webpack 试图解决这些 require 语句。

我已经确定这argscheck是在phonegap正在生成和提供的文件中定义的一块cordova.js,在Chrome中我可以看到它cordova.js包含:

// file: src/common/argscheck.js
define("cordova/argscheck", function(require, exports, module) {

但是由于 webpack 没有将其作为源之一进行处理,因此 webpack 不知道如何解析导入。

鉴于这cordova.js似乎是一个构建文件本身,我如何让 webpack 知道它的内容,以便解决插件导入及其依赖关系?

标签: cordovatypescriptwebpackcordova-pluginsphonegap

解决方案


推荐阅读