目的:从如下的普通旧
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');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。