2017-02-15 4 views
0

Я пытаюсь использовать http-хэш-модуль, чтобы построить API для моего приложения. Я использую AVA в качестве моего тестового бегуна для своего предыдущего теста. Когда я запускаю команду «NPM тест», я получаю эту ошибку в моей консоли:Пытается использовать функцию async с npm http-hash

import { send } from 'micro' 
^^^^^^ 
SyntaxError: Unexpected token import 

Я использую линт и он не посылает мне какую-либо ошибки. Вот мой package.json, где вы можете увидеть, что я использую некоторые Бабель плагинов для того, чтобы transpile генераторы:

{ 
"name": "pos_lisa-api", 
"version": "0.1.0", 
"description": "LISA POS REST API", 
"scripts": { 
    "lint": "standard", 
    "test": "npm run lint && ava" 
}, 
"author": "Mauricio Cano Giraldo", 
"license": "MIT", 
"devDependencies": { 
    "ava": "^0.18.1", 
    "babel-eslint": "^7.1.1", 
    "babel-register": "^6.23.0", 
    "standard": "^8.6.0", 
    "test-listen": "^1.0.1" 
}, 
"dependencies": { 
    "babel-plugin-transform-async-to-generator": "^6.22.0", 
    "babel-plugin-transform-runtime": "^6.23.0", 
    "babel-preset-es2015": "^6.22.0", 
    "babel-runtime": "^6.22.0", 
    "http-hash": "^2.0.0", 
    "micro": "^7.0.6", 
    "request": "^2.79.0", 
    "request-promise": "^4.1.1", 
    "uuid-base62": "^0.1.0" 
}, 
"standard": { 
    "parser": "babel-eslint" 
}, 
"babel": { 
    "presets": [ 
    "es2015" 
    ], 
    "plugins": [ 
    "transform-runtime", 
    "transform-async-to-generator" 
    ] 
} 

}

А вот мой файл узел, где я получаю ошибку:

'use strict' 

import { send } from 'micro' 
import httpHash from 'http-hash' 

const hash = httpHash() 

hash.set('GET /:id', async function getCliente (req, res, params) { 
    send(res, 200, params) 
}) 

export default async function main (req, res) { 
    let method = req.method 
    let url = req.url 

    let match = hash.get(`${method.toUpperCase()} ${url}`) 

    if (match.handler) { 
    try { 
     await match.handler(req, res, match.params) 
    } catch (e) { 
     send(res, 500, { error: e.message }) 
    } 
    } else { 
    send(res, 404, { error: 'La ruta no fue encontrada' }) 
    } 
} 

Я читаю по сети и ничего не нахожу. Пожалуйста, помогите мне! Я был бы признателен за это!

ответ

0

AVA только транслирует тестовые файлы, которые вы хотите запустить, но не модули, которые вы импортируете в них. Но вы можете сказать, что AVA также пересылает импортированные модули, требуя babel-register (https://github.com/avajs/ava#transpiling-imported-modules). И поскольку вы уже настроили babel, вы также можете сказать, что он использует вашу конфигурацию. Добавьте это в package.json

"ava": { 
    "babel": "inherit", 
    "require": ["babel-register"] 
} 

Если вы хотите использовать Бабель конфигурации AVA использует, вы можете оставить вне в "babel": "inherit", или вы можете определить совершенно другое, если вы хотите. Но обычно лучше всего наследовать ваш конфиг.

+0

Большое спасибо !!!!, вы правы. благодаря – maoooricio

0

Использование .babelrc вместо этого может работать.

+0

Привет, Джейсон, большое спасибо за ваш ответ. Я изучаю узел, поэтому такие понятия для меня новы. Файл .babelrc - это файл, например package.json? И это должно быть в корневом каталоге проекта? Заранее спасибо – maoooricio

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