我正在经历一种非常奇怪的行为,甚至无法说出应该归咎于哪个程序包。
我的设置:带有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: