Node.js, дающий SyntaxError: Неожиданный импорт токена [дубликат]

Просто введите имя столбца, которое вы хотите изменить, и установите индекс для нового местоположения.

def change_column_order(df, col_name, index):
    cols = df.columns.tolist()
    cols.remove(col_name)
    cols.insert(index, col_name)
    return df[cols]

В вашем случае это будет выглядеть так:

df = change_column_order(df, 'mean', 0)
56
задан Jonathan002 24 August 2017 в 06:17
поделиться

7 ответов

Node.js включил экспериментальную поддержку поддержки ES6. Подробнее читайте здесь: https://nodejs.org/api/esm.html .

TLDR; Сохраните файл с модулями ES6 с расширением .mjs и запустите его так:

node --experimental-modules my-app.mjs

Node.js не поддерживает модули ES6. В этом блоге Джеймсом описаны причины этого. Хотя вы можете использовать Babel для использования синтаксиса модулей ES6.

34
ответ дан tbking 17 August 2018 в 11:01
поделиться
  • 1
    @tbking, спасибо за статью. Важно понимать, что мы делаем. Извините, не могли бы вы добавить рабочий пример? Это должно быть всего 2-3 строки: импорт зависимостей, затем импорт целевого класса, а затем создание экземпляра. – Gurebu Bokofu 9 November 2017 в 01:33
  • 2
    Для рабочего примера см. stackoverflow.com/a/50641589/984471 – Manohar Reddy Poreddy 1 June 2018 в 10:40

Вернуться к оригинальному вопросу Jonathan002 о

"... какая версия поддерживает новые инструкции импорта ES6?"

, основанный на статье доктора Акселя Раушмайера , есть план по его поддержке по умолчанию (без флага экспериментальной командной строки) в Node.js 10.x LTS. Согласно плану выпуска node.js , как и в случае с 3/29, 2018, он, скорее всего, станет доступен после апреля 2018 года, а LTS - с октября 2018 года.

4
ответ дан codeful.element 17 August 2018 в 11:01
поделиться

Вы можете попробовать esm.

Вот некоторые введение: https://www.npmjs.com/package/esm

3
ответ дан Community 17 August 2018 в 11:01
поделиться
  • 1
    Это хороший вариант, особенно если TC39 все еще находится в воздухе. – Zardoz 27 March 2018 в 14:07

solution

https://www.npmjs.com/package/babel-register

// this is to allow ES6 export syntax
// to be properly read and processed by node.js application
require('babel-register')({
  presets: [
    'env',
  ],
});

// after that any line you add below that has typical es6 export syntax 
// will work just fine

const utils = require('../../utils.js');
const availableMixins = require('../../../src/lib/mixins/index.js');

ниже - определение mixins / index .js

export { default as FormValidationMixin } from './form-validation'; // eslint-disable-line import/prefer-default-export

, который отлично работал в моем приложении node.js CLI.

1
ответ дан DmitrySemenov 17 August 2018 в 11:01
поделиться
  • 1
    Пока это будет работать, это не ответ. В конечном счете это не требуется. – Zardoz 23 July 2018 в 11:34

Отработано около 3 часов.

Я просто хотел использовать файлы import и export в js.

Все говорят, что это невозможно. Но с мая 2018 года можно использовать выше в plain node.js без каких-либо модулей, таких как babel и т. Д.

Вот простой способ сделать это.

Создать ниже файлов, запустите и посмотрите вывод для себя.

Также не забудьте увидеть Explanation ниже.

myfile.mjs

function myFunc() {
    console.log("Hello from myFunc")
}

export default myFunc;

index .mjs

import myFunc from "./myfile"

myFunc();

run

node  --experimental-modules  index.mjs

output

(node:12020) ExperimentalWarning: The ESM module loader is experimental.

Hello from myFunc

Объяснение:

  1. Поскольку это экспериментальный модули, файлы .js называются .mjs-файлами
  2. Во время работы вы добавите «-experimental-modules» в «node index.js»
  3. . При работе с экспериментальными модулями в вы увидите: «(node: 12020) ExperimentalWarning: загрузчик модуля ESM является экспериментальным.«
  4. У меня есть текущая версия узла js, поэтому, если запустить «node -version», это дает мне «v10.3.0», хотя версия LTE / стабильная / рекомендуемая версия - 8.11.2 LTS.
  5. В будущем вы можете использовать .js вместо .mjs, поскольку функции становятся стабильными, а не Экспериментальный.
  6. Чтобы использовать экспериментальные особенности es, см. https://nodejs.org/api/esm.html

Надеюсь, что это помогло.

16
ответ дан Manohar Reddy Poreddy 17 August 2018 в 11:01
поделиться
  • 1
    пропуская этот флаг, я не могу запустить мой ./bin/www из шаблона ... – Stepan Yakovenko 23 June 2018 в 19:02
  • 2
    Какое сообщение об ошибке вы видите? – Manohar Reddy Poreddy 23 June 2018 в 20:07

Если вы используете систему модулей на стороне сервера, вам не нужно вообще использовать Babel. Для использования модулей в NodeJS убедитесь, что:

  1. Используйте версию узла, которая поддерживает флаг -experimental-modules
  2. Файлы .js должен быть переименован в .mjs

Вот и все.

Однако, но это большой, хотя ваш чистый ESK-код shinny будет работать в среде, такой как NodeJS ( при написании 9.5.0), у вас все еще будет сумасшествие транспиляции только для тестирования. Также имейте в виду, что Ecma заявила, что циклы выпуска для Javascript будут быстрее, а новые функции будут предоставляться на регулярной основе. Хотя это не будет проблемой для отдельных сред, таких как NodeJS, это несколько другое предложение для среды браузера. Понятно, что в рамках тестирования очень много предстоит сделать. Вам все равно нужно будет перераспределить для тестирования фреймворки. Я предлагаю использовать шутки.

Также имейте в виду структуру пакетов, вы столкнетесь с проблемами там

11
ответ дан Zardoz 17 August 2018 в 11:01
поделиться
1
ответ дан unflores 29 October 2018 в 15:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: