nieoczekiwany import słowa kluczowego w węźle.js

Próbuję uruchomić node.js backend server. Otrzymałem błąd unexpected reserved word przy imporcie w węźle.plik js.

Linie w pliku core.module.js to:

'use strict';
import lodashMixins from './lodashMixins.js'
... other imports and configurations ...

Uruchamiam proste polecenie: node core.module.js

Nie jest to rzadki błąd, ale zazwyczaj zdarza się to w przypadku innych bibliotek. Nie widziałem rozwiązania dla Node.js. Jak mam to naprawić? Używam Windows Server.

Edit: dowiedziałem się, że to ES6, ale jak mogę go uruchomić? Wygląda jak backend dla aplikacji, ale mam nie mam pojęcia, jakiego polecenia powinienem użyć, aby uruchomić go bez błędów.

Author: Dracontis, 2015-09-02

3 answers

Słowo kluczowe import jest częścią funkcji modułów w ECMAScript 2015, wraz z export i kilkoma innymi specyfikacjami.

Obecnie nie jest zaimplementowany natywnie w NodeJS, nawet w najnowszej wersji (v0.12.7), ani nie jest obsługiwany w forku ES2015 "bardziej przyjaznym" iojs.

Będziesz musiał użyć transpilera, aby to zadziałało.

[edytuj] nadal nie jest wspierany w najnowszej wersji (v5.8) pomimo istnienia znacznika --harmony_modules, który robi nic . Najlepiej jest użyć babel, jak wyjaśniono tutaj i tutaj

 33
Author: Amit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:10

import jest częścią ECMAScript 2015 (ES6) standard i jak wspomniano powyżej {[9] } nie jest obecnie zaimplementowana natywnie w Nodejs.

Więc możesz użyć transpilera jak babel aby uruchomić skrypt es6

npm install babel

Przykład oparty na tej odpowiedź

App.js

 import {helloworld,printName} from './es6'
 helloworld();
 printName("John");

Es6.js

 module.exports = {
    helloworld: function() { console.log('hello world!'); },
    printName: function(name) { console.log(name); }
}

I używając require hook w start.js

require("babel/register");
var app = require("./app.js");

I uruchom aplikację as

node start.js

EDIT Powyższa odpowiedź została oparta na babel v5.8.23. Dla babel >= v6

Użyj require hook w start.js as

require('babel-core/register');
require("./app.js");

Również transformacje nie są domyślnie włączone. Musisz więc zainstalować preset. W tym przypadku użyj es2015

npm install babel-preset-es2015

I użyj go w pliku .babelrc w folderze głównym

{
   "presets": ["es2015"]
}
 48
Author: Sami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:10

Napotkałem ten problem, ponieważ ręcznie instalowałem dowolne z tych narzędzi poza Visual Studio. Ale Visual Studio jest dostarczane z wieloma narzędziami wiersza poleceń open source, które są używane w nowoczesnych przepływach pracy nad tworzeniem stron internetowych. Oto jak możesz powiedzieć Visual Studio, aby używało tej samej wersji, która została zainstalowana ręcznie

Przejdź do Narzędzia –> Opcje –> projekty i rozwiązania - > zewnętrzne narzędzia internetowe

  • Ustaw zmienną środowiskową global PATH przed ścieżką wewnętrzną, możesz po prostu użyć strzałki w prawym górnym rogu, aby zmienić kolejność.

LUB

  • najpierw znajdź węzeł.instalacja js już masz i używaj w wierszu poleceń. Domyślnie Node.js 0.12.7 instaluje się na "C:\Program Files\nodejs". Dodaj ten wpis u góry do ścieżki do węzła.katalog js, aby zmusić Visual Studio do użycia tej wersji
 2
Author: sree,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-08 02:02:04