Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript webpack:在构建中实现zeptojs_Javascript_Jquery_Webpack_Zepto - Fatal编程技术网

Javascript webpack:在构建中实现zeptojs

Javascript webpack:在构建中实现zeptojs,javascript,jquery,webpack,zepto,Javascript,Jquery,Webpack,Zepto,我正试图将ZeptoJS添加到我的Web包供应商包中,但我不断收到一个错误,说明: 未捕获的TypeError:无法读取未定义(…)的属性“createElement” 我检查了zepto.js源代码,它在这行抱怨: table = document.createElement('table') <-- 'document' is undefined 在加载事件中加载vendor.js 以前是否有人遇到过此问题,并就如何使其正常工作提供了建议?谢谢。使用ZeptoJS之前,任何使用Ze

我正试图将ZeptoJS添加到我的Web包供应商包中,但我不断收到一个错误,说明:

未捕获的TypeError:无法读取未定义(…)的属性“createElement”

我检查了zepto.js源代码,它在这行抱怨:

table = document.createElement('table')  <-- 'document' is undefined
在加载事件中加载vendor.js

以前是否有人遇到过此问题,并就如何使其正常工作提供了建议?谢谢。

使用ZeptoJS之前,任何使用ZeptoJS的文件都应该有一行如下所示:

// ES6 module syntax
import $ from 'webpack-zepto';

$.zeptoMethod();
或者这个:

// ES6 module syntax with direct reference to ZeptoJS file
import 'path/to/zepto.min.js' as $;

$.zeptoMethod();
它也可能看起来像:

// AMD module syntax
require(['zepto'], function ($) {
    $.zeptoMethod()
});
当webpack看到上述代码时,它知道应该将zepto.js添加到包中

请注意,webpack.conf.js不需要知道关于ZeptoJS的任何信息,特别是。如果您希望webpack对ZeptoJS进行特殊处理(比如加载zepto.min.js而不是zepto.js,甚至加载jQuery而不是ZeptoJS!),ZeptoJS可能会出现在webpack.conf.js中


也可以通过将ZeptoJS包含在HTML文件的标记中并引用
$
(全局
窗口。$
)来使用ZeptoJS。但是,如果以这种方式使用ZepotoJS,则Web包无法知道ZeptoJS应该包含在捆绑包中


如果由于某种原因ZeptoJS不支持作为模块加载,那么包装起来很简单。(并且已经完成:)

问题在于Zepto本身:

为防止作用域泄漏,browserify/webpack将模块包装在函数中。
将成为该函数的作用域,而不是
窗口

这个问题应该在合并时解决

同时,为了防止发生此问题,您可以使用:


您在代码中的何处/如何包含zepto?我认为webpack配置决定了模块的加载方式,但不应该实际加载模块本身。而且,在大多数情况下,webpack配置不应该只需要zepto的特殊设置。(源文件中应该有一行需要zepto,如:
require('zepto'))
导入'zepto'
)页面加载后执行zepto。是的,但必须有一个使用zepto的文件。哪个文件,以及它如何表示“我需要zepto”?
// AMD module syntax
require(['zepto'], function ($) {
    $.zeptoMethod()
});
// In your Webpack config
module: {
  rules: [{
    test: require.resolve('zepto'),
    use: {
      loader: 'imports-loader',
      options: 'this=>window',
    },
  }],
}