我正在努力从我使用该模块的对象中获取const.exports之外的const属性。这是一个简单的例子:
ServiceX.js
const _ = require('lodash');
module.exports = {
testFirstName: function () {
console.log('Nodics');
}
}
ServiceY.js
const utils = require('utils');
module.exports = {
testLastName: function () {
console.log('framework');
}
}
现在如果我通过require导入两个文件并通过_.merge()合并。输出文件包含两种方法,但它不包含任何const变量定义外部导出。
let combined = _.merge(require('ServiceX'), require('ServiceY'));
将这个结合到第三个文件中的一些MyService
即使我通过console.log(combined)
打印这个组合对象,我只得到两个函数,而不是const属性。
我有的用例: 我在不同的位置有n个文件,我需要读取文件,合并所有文件并创建一个包含合并内容的新文件。
请帮助我,
由于
答案 0 :(得分:0)
这里的问题是服务目前看起来像:
const _ = require('lodash');
module.exports = {
testFirstName: function () {
console.log('Nodics');
}
}
原因是 if 如果你读取所有文件并连接结果,那么module.exports
将被最后一个读取文件覆盖。
但如果它看起来像:
const _ = require('lodash');
module.exports.testFirstname = function () {
console.log('Nodics');
}
您可以在所有服务上执行fs.readFileSync()
并将结果连接起来。
您也可以将其作为构建命令,而不是代码:
cat service*.js > combined.js
你很可能遇到其他问题,因为如果一个服务使用const _ = require('lodash')
而另一个服务使用同样的服务,你会尝试重新定义一个const变量。
为了解决这个问题,你可以将你的需求转移到另一个范围,这样他们就不会在文件级范围内发生冲突。