我正在为以后的工作构建一个节点框架,可以轻松地对其进行管理。它已经有一个配置模块。
我编写了一个错误处理程序,并更新了配置以供随后使用。从那以后,我不能像以前那样使用.then()
方法。有趣的是,它不能在以前的版本(git checkout
)上运行。
我不知道该怎么解决。你呢?
到目前为止我尝试过的是:
重新安装所有的node_modules(也是全局变量)git checkout
到早期版本
完全删除并重新安装节点和npm
重新安装所有的node_modules(再次)
喝很多咖啡
买很多啤酒送给他们正确的答案
我使用了这个简单的脚本来测试ConfigManager
:
var Config = require('./core/server/config');
// Init the Config method
Config.load().then(function(){
// Write out the 'url'
console.log(Config.get('url'));
}
// Update: and I have to wait for processing or I get `undefined`
console.log(Config.get('url'));
// > undefined
如果我实时执行此操作,但是没有then()方法,则它可以正常工作:
var Config = require('./core/server/config');
// > undefined
Config.load();
// > { _bitField: 0, _fulfillmentHandler0: undefined, _rejectionHandler0: undefined, _promise0: undefined, _receiver0: undefined, _settledValue: undefined, _boundTo: undefined, _traceParent: undefined, _trace: [Error] }
Config.get('url');
// > 'http://127.0.0.1'
注意:
ConfigManager
与TryGhost/Ghost's module有很多共同点。 最佳答案
我的错。真可惜
好像当我提交/推送此修复程序时,我意外撤消了一些更改,这些更改只有在大约半天后才意识到...
这就是问题所在(可能对初学者有帮助):
+ return new Promise(function(resolve, reject){
+ resolve(self._config);
- return new Promise(function () {
- return self._config;
});
更新:本杰明的解决方案要好得多。相同但更紧凑和清晰。谢谢!
return Promise.resolve(self._config);
关于javascript - Bluebird不会调用then(),即使使用先前的工作代码也是如此,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27527565/