2016-07-14 2 views
0

Неудача сегодня на работе, задаваясь вопросом, может ли кто-нибудь предложить некоторые рекомендации. Я пытаюсь выполнить примерно следующее, описанное ниже.Пересылка es6 в es5

Файлы им работать с:

  1. config.js: конфигурационный файл, используя ES6 синтаксис (в частности, с использованием импортного ключевого слова).
  2. script.js: сценарий узла, написанный с использованием версии узла, который не поддерживает использование синтаксиса es6 (особенно с использованием ключевого слова import). script.js стремится прочитать содержимое config.js

    //config.js 
    import _ from 'npm:lodash' 
    import foo from '../otherRandomFile.js' 
    var configObject = { 
        randomConfigOne: true, 
        randomConfigTwo: false 
    } 
    export default configObject; 
    
    //script.js 
    var config = require('../app/config.js) 
    //cannot console log as below because script barfs 
    //due to import being a reserved wrk 
    console.log(config.randomConfigOne); 
    

Вопрос: Что я должен делать в script.js, так что я могу получить доступ к объекту, экспортируемый config.js файл. Сейчас сценарий ненадежен о том, что я пытаюсь использовать ES6 синтаксис в файле я доступ к

+0

положить .DEFAULT после вашего требуют в script.js – JordanHendrix

+3

Ну, с вашего заголовка вопроса, похоже, вы уже нашли решение: используйте transpiler. Вы попробовали? – Bergi

+0

@bergi Да, я попытался использовать транспилер (babel), однако дьявол находится в деталях. Как вы можете видеть, config.js импортирует другие файлы (otherRandomFile.js), который, в свою очередь, также использует синтаксис es6, поэтому мне пришлось бы как-то рекурсивно перекрыть все импортированные файлы. Практически в этот момент единственное решение, которое я вижу, - это перепечатка всей директории. Надеюсь, что есть лучший способ. – dkorenblyum

ответ

0
console.log(config.default.randomConfigOne); 

, таким образом, ваш модуль может экспортировать несколько элементов при использовании

export default 

Это хранится в module.default

Проверьте этот пример https://babeljs.io/repl/#?evaluate=false&lineWrap=true&presets=es2015%2Ces2015-loose%2Cstage-0%2Cstage-1%2Cstage-2%2Cstage-3&experimental=true&loose=false&spec=true&code=export%20default%20%7B%0A%20%20%0A%7D

столпотворение преобразует export default {} -

"use strict";

Object.defineProperty(exports, "__esModule", { 
    value: true 
}); 
exports.default = {}; 

в таких случаях - просто проверить transpiled код

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