【发布时间】:2015-05-22 21:08:27
【问题描述】:
我需要一个具有自调用函数的 NodeJS 库,这会导致错误,因为它会查找当时未初始化的对象。
我想在初始化该对象时动态地require 这个库。
有没有办法动态require/ 加载库?
这是所需库的一部分: https://github.com/sakren/node-google-maps/blob/develop/lib/Google.js#L5
实际上我想在窗口对象存在时要求(客户端渲染)。
所以是这样的:
'use strict';
var React = require('react');
var Map = require('./map.jsx');
var Common = require('../common/common');
var MapStatic = require('./map-static.jsx');
exports.type = function() {
return 'map';
};
exports.jsx = function(data) {
if (Common.isServerSide()) {
return (<MapStatic data={data}/>);
} else {
return (
<Map data={data}/>
);
}
};
exports.transform = require('./map-transform.js');
代码看起来很奇怪的原因是我正在使用反应。
【问题讨论】:
-
您可以向我们展示一些代码以帮助更好地说明您的问题吗?初始化对象后,您应该只需要该库。
-
@Brennan 代码已添加。当且仅当 else 语句是要走的分支时,我希望图书馆是必需的。
-
require()只是一个普通函数。如果需要,您可以在if语句中调用它。除此之外,我真的不明白这里的问题是什么。 -
为了便于理解,让我重新表述问题:假设您有 2 个文件。
File A需要File B在 if-else 块的 else 部分,它永远不会到达。在File B中有一个自调用函数,它唯一的工作就是抛出一个错误。因此,在服务器端,NodeJS 无论如何都无法达到要求File B的事实,运行通过File B并引发错误。 -
您是否考虑过分叉存储库并使函数不自调用?我相信这会解决你的问题。