https://github.com/auth0/jwt-decode
此javascript代码(简化后的lib/index.js)
`
'use strict';
function InvalidTokenError(message) {}
InvalidTokenError.prototype = new Error();
InvalidTokenError.prototype.name = 'InvalidTokenError';
module.exports = function (token,options) {};
module.exports.InvalidTokenError = InvalidTokenError;
`
被编译为
var module$node_modules$jwt_decode$lib$index={}; module$node_modules$jwt_decode$lib$index["default"].InvalidTokenError=function(message){}; module$node_modules$jwt_decode$lib$index["default"].InvalidTokenError.prototype=new Error; module$node_modules$jwt_decode$lib$index["default"].InvalidTokenError.prototype.name="InvalidTokenError"; module$node_modules$jwt_decode$lib$index["default"]=function(token,options){}
它在第二行失败,报错“未捕获的类型错误:无法设置属性'InvalidTokenError'为undefined” - 在原始代码中,函数先导出,然后对InvalidTokenError赋值,而在编译代码中,InvalidTokenError先赋值给尚未准备的"默认"属性。