0

我正在尝试在使用 webpack 的反应应用程序中使用 Promise,但出现此错误:

'Promise' is not defined no-undef

到目前为止,一切都运行良好(使用 babel 翻译 js 和 jsx)但不幸的是 Promise 不起作用。

此外,我在 Chrome(最新)中有这个错误,我虽然 Promise 是内置功能......我是对的吗?

这是我使用的一个配置(我使用survivorjs看板应用程序作为启动器,我正在尝试添加一些功能)。我没有改变太多初始配置:

来自 web pack.config.js

module: {
      loaders: [
        {
          test: /\.(js|jsx)$/,
          // Enable caching for extra performance
          loaders: ['babel?cacheDirectory'],
          include: include
        }
      ]
}

来自 .babelrc

{
  "presets": [
    "es2015",
    "react"
  ],
  "env": {
    "start": {
      "presets": [
        "react-hmre"
      ]
    }
  }
}

失败代码:

const locales = {
    en: () => require('react-intl?locale=en!./en.json'),
    fr: () => require('react-intl?locale=fr!./fr.json')
}

function loadLocaleData (locale) {
    return new Promise((resolve) => {
        locales[locale]()(resolve)
    })
}

有效的答案在评论中

4

1 回答 1

0

据我所知,你需要在你的 webpack 配置中包含一个 Promise polyfill。我用:

plugins: [
    new webpack.ProvidePlugin({
        'Promise': 'exports?global.Promise!es6-promise'
    })
],

其中 es6-promise 是一个 npm 包,当没有任何承诺可用或由任何其他 npm 包添加时将包含该包

于 2016-09-25T18:36:52.747 回答