gpt4 book ai didi

node.js - 如何在 Node.js 中包含一个不是模块的文件(使其成为一个模块)?

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:11 26 4
gpt4 key购买 nike

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

var foo = function () {};

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

为什么 foo 在第一个 if 中是一个普通的空对象?如何在我的模块中“包含”纯 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 的 Node 模块必须使用模块想要公开的所有内容填充exports 对象。在您的情况下,当您需要文件时,exports 中没有添加任何内容,因此它显示为空。所以简短的回答是你需要以某种方式修改 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');

关于node.js - 如何在 Node.js 中包含一个不是模块的文件(使其成为一个模块)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com