如何在Node.js中包含一个不是模块的文件(制作模块)?

目的:从如下的普通旧 JavaScript文件制作Node.js模块或Requirejs AMD模块:

var foo = function () {};

我无法控制,我无法编辑foo.js.

Whyfoo是第一个内部是一个普通的空对象吗?如何在模块中“包含”普通的JavaScript文件文件mymodule.js:

(function(root) {
    if(typeof exports === 'object') { // Node.js
        var foo = require('./foo');

        console.log(foo); // { }
    } else if (typeof define === 'function' && define.amd) { // RequireJS AMD
        define(['foo'],function () {
            return foo;
        });
    }
}());

解决方法

加载了require的节点模块必须使用模块想要公开的所有内容填充导出对象.在您的情况下,当您需要文件时,没有任何内容添加到导出,因此它显示为空.所以简短的回答是你需要以某种方式修改foo.js的内容.如果您不能手动执行,则需要以编程方式执行此操作.为什么你无法控制它?

如果代码中的foo.js需要使其成为一个合适的模块,那么最简单的方法就是以编程方式包装内容.

// Add an 'exports' line to the end of the module before loading it.
var originalFoo = fs.readFileSync('./foo.js','utf8');
fs.writeFileSync('./foo-module.js',originalFoo + "\nexports.foo = foo;");
var foo = require('./foo-module.js');

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...