未捕获的ReferenceError:未定义Promise

时间:2014-04-21 00:54:20

标签: javascript google-chrome promise google-chrome-app

我使用的Chrome应用程序对我来说非常合适,但是其他用户在启动时会收到错误Uncaught ReferenceError: Promise is not defined。出于某种原因,它并不了解Promise是什么。代码在我的结尾完美运行,我以前从来没有得到过这个错误,但用户每次都得到它。这可能是什么问题?

4 个答案:

答案 0 :(得分:4)

用户将Chrome更新为最新版本,并且显然已将其修复。我不知道怎么样,因为他的版本是从2013年12月开始的,当然Promise工作了。我不知道。这肯定不是代码的问题,因为我运行的是用户运行的相同版本,我从未遇到过该错误。

但是 - 显然是固定的。

编辑:显然Promise仅在Chrome 32之后才有效,所以是的,这就是错误的原因。

答案 1 :(得分:2)

要支持IE及其他浏览器的旧版本,您应该考虑为Promise对象加载polyfill。

您可以使用带有<script>标记的开箱即用的实施here

答案 2 :(得分:0)

旧浏览器中的修饰

Android 4.x浏览器承诺

我在Android 4.X浏览器中遇到了类似的问题。我在webpack配置中使用es6-promise解决了这个问题: 承诺:'es6-promise'

​plugins: [
    ​    //tells webpack where to store data about your bundles.
    ​    new BundleTracker({filename: './webpack-stats.json'}),        ​
    ​    //makes jQuery available in every module
    ​    new webpack.ProvidePlugin({
    ​        $: 'jquery',        ​
    ​        jQuery: 'jquery',
    ​        'window.jQuery': 'jquery',
    ​        Promise: 'es6-promise'
    ​    }),
​    // Configure path for served CSS files ("desktop_css" will be served as /dist/desktop_css.css)    ​
​    new ExtractTextPlugin('[name].css'),    ​
​],

我可以使用Promise:http://caniuse.com/#feat=promises

一些相关链接:

axios IE promise doesn't work

https://github.com/axios/axios/issues/188

https://github.com/webpack/webpack/issues/4254

答案 3 :(得分:0)

不是该领域的专家,但这也许会对某人有所帮助。

在Android 4.4的Cordova Android应用上也遇到了同样的问题。

通过运行此命令修复

 1. cordova plugin rm cordova-plugin-inapppurchase --save
 2. cordova plugin add https://github.com/AlexDisler/cordova-plugin-inapppurchase#1968e41d173481eb2e6a536fdc55cc9e9253e6d5 --save