2015-11-27 1 views
4

Я пытаюсь потребовать в api.js, но получаю ошибку «TypeError: (0, _typeof3.default) не является функция". Попытка отладки этой проблемы показывает, что удаление слова «async» заставляет ошибку исчезнуть, но я пытаюсь использовать async. У меня установлены все плагины aselc для babel, определенные в package.json и включены в плагины webpack.config.js и .babelrc. Пожалуйста помоги.webpack babel es7 async function error "TypeError: (0, _typeof3.default) не является функцией«

мои api.js

let config = require('config'), 
 
    $ = require('jquery') 
 

 
module.exports = { 
 
    loggedIn: false, 
 
    api: async (endpoint, params={}, method="GET") => { 
 
    console.log(endpoint, params, method) 
 
    let request, 
 
     url = config.urls.api + endpoint 
 

 
    switch(method){ 
 
     case 'GET': request = $.get(url); break; 
 
     case 'POST': request = $.post(url); break; 
 
    } 
 

 
    try{ 
 
     let res = await request 
 
     return res 
 
    }catch(e){ 
 
     if(e == 'not logged-in'){ 
 
     this.loggedIn = false 
 
     } 
 
    } 
 
    } 
 
}

package.json

{ 
 
    "name": "background", 
 
    "version": "1.0.0", 
 
    "description": "", 
 
    "main": "background.js", 
 
    "scripts": { 
 
    "test": "echo \"Error: no test specified\" && exit 1", 
 
    "dev": "NODE_ENV=dev webpack --progress --colos --watch" 
 
    }, 
 
    "author": "", 
 
    "license": "ISC", 
 
    "devDependencies": { 
 
    "babel-core": "^6.2.1", 
 
    "babel-loader": "^6.2.0", 
 
    "webpack": "^1.12.9", 
 
    "babel-plugin-syntax-async-functions": "^6.0.14", 
 
    "babel-plugin-syntax-decorators": "^6.1.18" 
 
    }, 
 
    "dependencies": { 
 
    "babel-plugin-transform-runtime": "^6.1.18", 
 
    "babel-polyfill": "^6.2.0", 
 
    "babel-preset-es2015": "^6.1.18", 
 
    "babel-preset-stage-3": "^6.1.18", 
 
    "babel-runtime": "^6.2.0", 
 
    "jquery": "^2.1.4" 
 
    } 
 
}

.babelrc

{ 
 
    "plugins": ["syntax-decorators","syntax-async-functions"] 
 
}

webpack.config.js

const path = require('path') 
 

 
console.log(process.env.NODE_ENV) 
 

 
module.exports = { 
 
    entry: ['babel-polyfill', './background.js'], 
 
    output: { 
 
    filename: 'background-bundle.js', 
 
    publicPath: 'http://localhost:8090/assets', 
 
    path: '../dist' 
 
    }, 
 
    module: { 
 
    loaders: [ 
 
     { 
 
     loader: 'babel-loader', 
 
     test: /.jsx?$/, 
 
     exclude: path.resolve(__dirname, "node_modules"), 
 
     query: { 
 
      plugins: ['transform-runtime','syntax-async-functions', 'syntax-decorators'], 
 
      presets: ['es2015','stage-3'] 
 
     } 
 
     } 
 
    ] 
 
    }, 
 
    externals: { 
 
    //don't bundle the 'react' npm package with our bundle.js 
 
    //but get it from a global 'React' variable 
 
// 'react': 'React' 
 
    }, 
 
    resolve: { 
 
    extensions: ['', '.js', '.jsx'], 
 
    alias: { 
 
     config: path.join(__dirname, 'config', process.env.NODE_ENV) 
 
    } 
 
    } 
 
}

+0

Попробуйте положить 'требуют ('Бабель-polyfill')' в верхней части в вашем 'api.js'. – laggingreflex

ответ

5

Это было на самом деле решена удалением плагина преобразования-выполнения. Я все еще не уверен, почему это так. Я хотел бы получить некоторые комментарии о том, почему.

const path = require('path') 
 

 
console.log(process.env.NODE_ENV) 
 

 
module.exports = { 
 
    entry: ['babel-polyfill', './background.js'], 
 
    output: { 
 
    filename: 'background-bundle.js', 
 
    publicPath: 'http://localhost:8090/assets', 
 
    path: '../dist' 
 
    }, 
 
    module: { 
 
    loaders: [ 
 
     { 
 
     loader: 'babel-loader', 
 
     test: /.jsx?$/, 
 
     exclude: path.resolve(__dirname, "node_modules"), 
 
     query: { 
 
      plugins: ['transform-runtime','syntax-async-functions', 'syntax-decorators'], 
 
      presets: ['es2015','stage-3'] 
 
     } 
 
     } 
 
    ] 
 
    }, 
 
    externals: { 
 
    //don't bundle the 'react' npm package with our bundle.js 
 
    //but get it from a global 'React' variable 
 
// 'react': 'React' 
 
    }, 
 
    resolve: { 
 
    extensions: ['', '.js', '.jsx'], 
 
    alias: { 
 
     config: path.join(__dirname, 'config', process.env.NODE_ENV) 
 
    } 
 
    } 
 
}

Смежные вопросы