为什么express中的module.exports 和 exports 可以同时使用
有如下疑惑: express 的 express.js 中 有如下代码
exports = module.exports = createApplication;
function createApplication() {// ...}
exports.application = proto;
exports.request = req;
exports.response = res;
而我写的测试文件 这种写法会报错呢?
exports = module.exports = fun;
function fun(){
console.log('fun');
};
exports.name = 'sn';
TypeError: Cannot assign to read only property 'na
me' of function fun(){
console.log('fun');
}
at Object.<anonymous> (C:\Users\Administrator\
Desktop\node\express\test1.js:9:14)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:44
2:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object.<anonymous> (C:\Users\Administrator\
Desktop\node\express\test2.js:4:11)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:44
2:10)
或者说 为什么 express中这样写不会报错呢?
3 回复
使用了这样的方法,成功运行.也许express也是这样用的吧…**
'use strict';
exports = module.exports = fun;
function fun(str){
return str;
};
var obj = {};
Object.defineProperty(obj,'name',{
value:'sn',
writable:true,
enumerable:true,
configurable:true
});
exports.obj = obj;
因为你导出的是一个函数。而函数有一个name属性,是定义的时候就确定了的,就是fun。你要导出的值是’sn’的那个变量随便换个其他名字就行了
@Alexis374 刚刚试了下还真是 太感谢了! 我还以为是什么可读可写可枚举呢