我正在经历一种非常奇怪的行为,甚至无法说出应该归咎于哪个程序包。
我的设置:带有JSXTransformer和jsx!插件的RequireJS项目
我有这样的es6类:

define([
    'react'
], function(
    React
) {

    class MyComponent extends React.Component {

        myMethod() {
            otherObject.someMethod()._privateProp; // Yes, we need this accessing and have no influence on it
        }

    }

    return MyComponent;

});

运行r.js之后,结果包中的已编译输出为:
define('jsx!project/components/InputOutput',[
    'react'
], function(
    React
) {

    var ____Class8=React.Component;for(var ____Class8____Key in ____Class8){if(____Class8.hasOwnProperty(____Class8____Key)){MyComponent[____Class8____Key]=____Class8[____Class8____Key];}}var ____SuperProtoOf____Class8=____Class8===null?null:____Class8.prototype;MyComponent.prototype=Object.create(____SuperProtoOf____Class8);MyComponent.prototype.constructor=MyComponent;MyComponent.__superConstructor__=____Class8;function MyComponent(){"use strict";if(____Class8!==null){____Class8.apply(this,arguments);}}

        MyComponent.prototype.myMethod=function() {"use strict";
            otherObject.someMethod().$MyComponent_privateProp;
        };



    return MyComponent;

});

注意otherObject.someMethod().$MyComponent_privateProp;是如何写在那里的。因为它不是MyComponent实例的属性,所以显然会中断。

最佳答案

/** @preventMunge */添加到文件顶部。参见this GitHub issue:

09-25 20:06