我正在古腾堡区块开发中迈出第一步,但我已经陷入了困境。我的block JS脚本使用了几个lodash函数(filter
和pick
). 我正在使用以下函数注册我的块:
function register_block() {
wp_register_script(
\'block-script\',
plugins_url( \'block.build.js\', __FILE__ ),
array( \'wp-blocks\', \'wp-components\', \'wp-element\', \'wp-utils\', \'lodash\' )
);
register_block_type( \'my/block\', array(
\'editor_script\' => \'block-script\',
) );
}
如您所见,我正在添加lodash库作为依赖项,并检查在插件脚本之前有效加载的页面源代码。然而,我得到了
ReferenceError: pick is not defined
控制台错误。
这是调用pick
功能:
onSelectImages( images ) {
this.props.setAttributes( {
images: images.map( ( image ) => pick( image, [ \'alt\', \'caption\', \'id\', \'url\' ] ) ),
} );
}
我不知道我做错了什么。有什么想法吗?
提前感谢
SO网友:Tom J Nowell
问题是,lodash不是脚本依赖关系,而是NPM依赖关系:
array( \'wp-blocks\', \'wp-components\', \'wp-element\', \'wp-utils\', \'lodash\' )
您不能以这种方式将其排队并期望您的应用程序生成。Lodash可能在WP Admin中可用,但webpack在本地节点CLI上下文中运行,它不知道是什么
lodash
是因此,您需要使用
npm
通过babel/webpack/等获取库并将其包含在最终JS构建中。这样,webpack/babel就知道了
lodash
并且能够正确地完成工作。