【问题标题】:Promise objects not working in React Native projectPromise 对象在 React Native 项目中不起作用
【发布时间】:2021-08-06 20:08:56
【问题描述】:

首先,我认为 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

看,没有“已解决”日志或错误日志。

我尝试使用 nvm 更改 nodejs 版本,但没有成功。我试过 v12.5.0、v12.18.2、v15.6.0、v10.16.3。我试过nvm use 12.5 && npm start

我尝试创建一个新的 react-native 项目并复制了所有内容。 现在,它按预期工作了。 这对我来说是一个解决方案,但我没有将问题标记为已解决,因为仍有一个谜团,我不知道为什么它在现有项目。

【问题讨论】:

  • 为我打印return promise hede; resolve promise; resolved
  • 是的,应该是这样的。但是在这个反应原生项目中。不知何故“解决”不打印
  • 除非在标准输出完全传输之前进程结束是一些奇怪的问题,否则不确定发生了什么。

标签: node.js react-native es6-promise metro-bundler


【解决方案1】:

似乎在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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多