【问题标题】:Unexpected token await in React NativeReact Native 中的意外令牌等待
【发布时间】:2016-11-04 04:51:34
【问题描述】:

我尝试获取支持 await 令牌的最新 babel/babylon 包,但仍然看到相同的错误。

错误的原因可能是await在map()函数内部,并且超出了原始函数范围。

我在配置中缺少什么?

index.js:

async getLocations(locations) {
       var annotations = locations.map(function(location) {
           try {
               let res = await Geocoder.geocodeAddress(location.address);
               console.log(res);
               console.log(res[0].position);
           }
           catch(err) {
               console.log(err);
           }
           return (
               {
                   latitude: res[0].position.lat,
                   longitude: res[0].position.lng
               }
           );
       });
}

控制台:

transformed 1/2 (50%)[node-haste] Encountered an error while persisting cache:
> SyntaxError: /Users/user/Developer/ReactProject/index.js: Unexpected token (122:25)
>   120 |      var annotations = inspections.map(function(inspection) {
>   121 |        try {
> > 122 |          let res = await Geocoder.geocodeAddress(address);
>       |                          ^
>   123 | 
>   124 |           console.log(res);
>   125 |           console.log(res[0].position);
>     at Parser.pp.raise (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/location.js:22:13)
>     at Parser.pp.unexpected (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/util.js:89:8)
>     at Parser.pp.parseAwait (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/expression.js:1082:10)
>     at Parser.pp.parseExprAtom (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/expression.js:423:25)
>     at Parser.pp.parseExprSubscripts (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/expression.js:277:19)
>     at Parser.pp.parseMaybeUnary (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/expression.js:257:19)
>     at Parser.pp.parseExprOps (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/expression.js:188:19)
>     at Parser.pp.parseMaybeConditional (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/expression.js:165:19)
>     at Parser.pp.parseMaybeAssign (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/expression.js:128:19)
>     at Parser.pp.parseVar (/Users/user/Developer/ReactProject/node_modules/babylon/lib/parser/statement.js:601:24)

package.json

  "dependencies": {
    "babel": "^6.5.2",
    "babel-core": "^6.1.2",
    "babel-plugin-transform-runtime": "^6.1.2",
    "babel-polyfill": "^6.9.1",
    "babel-preset-es2015": "^6.1.2",
    "babel-preset-stage-0": "^6.1.2",
    "babel-preset-stage-3": "^6.11.0",
    "babylon": "^6.8.2",
    "react": "^15.1.0",
    "react-native": "0.27.2",
  },

.babelrc:

{
  "presets": [ "es2015", "stage-3" ]
}

【问题讨论】:

    标签: reactjs async-await react-native ecmascript-6 babeljs


    【解决方案1】:

    试试这个,

    {
      "plugins": ["transform-async-to-generator"]
    }
    

    https://babeljs.io/docs/plugins/transform-async-to-generator/

    【讨论】:

      【解决方案2】:

      使用await的函数必须声明为async:

      inspections.map(async function(inspection) {
      

      【讨论】:

      • 该声明已经是函数的一部分,不,它没有帮助。
      猜你喜欢
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-24
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      相关资源
      最近更新 更多