Cap32 / wxapp-webpack-plugin

📦 微信小程序 webpack 插件
MIT License
202 stars 60 forks source link

关于支付宝小程序对应的target无效的问题 #20

Closed nightost closed 6 years ago

nightost commented 6 years ago

path:wxapp-webpack-plugin/src/index.js code:

const miniProgramTarget = compiler => {
    const { options } = compiler;
    compiler.apply(
        new JsonpTemplatePlugin(options.output),
        new FunctionModulePlugin(options.output),
        new NodeSourcePlugin(options.node),
        new LoaderTargetPlugin('web')
    );
};
export const Targets = {
    Wechat(compiler) {
        return miniProgramTarget(compiler);
    },
    Alipay(compiler) {
        return miniProgramTarget(compiler);
    }
};

miniProgramTarget注入使用的是window,作者是否测试是有效的 本人尝试使用miniProgramTarget,支付宝依然报错

Uncaught TypeError: Cannot read property 'webpackJsonp' of undefined

Cap32 commented 6 years ago

刚测试过最新版是有效的。能提供 webpack 及其相关的额配置么?

nightost commented 6 years ago

我使用的是mpvue,原生支持微信小程序。 我通过您的target配置来生成支付宝小程序的代码。 会发现webpackJsonp挂载在window下面,但是window又是无法访问的 就弄不明白支付宝小程序的编译到底基于什么了(之前global也不行)

Cap32 commented 6 years ago

正确使用的话,webpackJsonp 将不会挂载到 window 上,原因是 https://github.com/Cap32/wxapp-webpack-plugin/blob/master/src/index.js#L422-L429

不提供重现代码我无法帮助你。

nightost commented 6 years ago

我只是在想wepack编译到支付宝小程序的话,webpackJsonp是挂载到global么或者是其他方式,必进global是node编译环境。 感觉支付宝小程序的像是java编译的

nightost commented 6 years ago

我明白了你的逻辑,挂载到wx或者my上是吧

Cap32 commented 6 years ago

webpack config 应该是这样

import WXAppWebpackPlugin, { Targets } from 'wxapp-webpack-plugin';

export default {
  target: Targets.Alipay,
  // ...
};

这个插件会自动处理 webpackJsonp 的挂载。

不知道有没有理解错你的意思

nightost commented 6 years ago

是的,我只是看了一下你的代码,我发现你是这么实现的,直接挂载在my或者wx上的,解决了我的第一步问题。这个issue关闭了吧。