承诺对象在React Native项目中不起作用



首先,我认为firebase函数坏了。然后,我试着做一个返回Promise的简单函数。我把它放到了顶层index.js。

const testPromise = param => {
console.log('return promise', param);
return new Promise((resolve, reject) => {
console.log('resolve promise');
resolve('derp');
});
};
testPromise('hede')
.then(d => {
console.log('resolved');
})
.catch(e => {
console.log('e', e);
});
AppRegistry.registerComponent(appName, () => App);

控制台输出:

return promise hede
resolve promise

看,没有'resolved'日志,也没有错误日志。

我试图用nvm改变nodejs版本,但没有运气。我尝试了v12.5.0, v12.18.2, v15.6.0, v10.16.3。我试过像nvm use 12.5 && npm start

我试着创建一个新的react-native项目,我复制了所有的东西。现在,它可以正常工作了这对我来说是一个解决方案,但我没有把问题标记为解决,因为仍然有一个谜,我不明白为什么它不能在现有的项目上工作。

似乎在metro.config.js文件中设置inlineRequires为false解决了这个问题。

module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
};

修改后输出为:

return promise hede
resolve promise
resolved

来源:https://github.com/facebook/react-native/issues/31558 issuecomment - 878342213

相关内容

  • 没有找到相关文章

最新更新