javascript - 为什么下面的 `exports = { z: function() {} };` 不起作用

标签 javascript node.js commonjs

a.js

exports = {
    z: function() {
        console.log('aZ');
    }
};

ma​​in.js

require('./a').z(); // error

为什么 require('./a') 返回一个空对象?

最佳答案

因为在您的示例中,您正在覆盖 exports 全局,而不是更新它。如果您将代码替换为:

exports.z = function() {
    console.log('aZ');
};

它会起作用,因为您正在将 z 添加到实际的导出对象。


如果您查看 docs ,你会看到:

A reference to the module.exports that is shorter to type.


所以你可以想象这种情况:

var module = {
    exports: { /* some export stuff */ }
};

var exports = module.exports;

现在,如果您将导出替换为 exports = something,您实际上并没有更改 module.exports。

关于javascript - 为什么下面的 `exports = { z: function() {} };` 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40765368/

相关文章:

javascript - jquery性能问题, Action 注册

javascript - 没有新页面()的 puppeteer 启动?新页面结果 secureConnectionStart 为 0

javascript - 无法使用汇总 : "require is not defined" 在 commonjs 中导入 npm 模块

javascript - Kineticjs - 在循环内设置 Canvas 上多个图像的位置

javascript - 如何在 Chart.js 中设置条形的默认颜色

javascript - 如何将嵌套_.each转换为同步方法?首选使用 Promises 或 Async.waterfall

node.js - 在 Mongoose 中将数组更新到文档中

node.js - Node.js中如何在当前目录下创建目录

npm - 带有browserify的多个 bundle ,在外部使用模块

javascript - 这两个 module.exports 有什么区别?