nodejs Импорт требует преобразования

Изучение NodeJs здесь. Проблема в том, что когда я пытался искать ответы, я не находил того, что ищу. Вероятно, потому что это слишком просто или не является проблемой.

Я работаю над nodejs с angular2. Поэтому, естественно, у меня есть такие вещи, как:

import { stuff } from 'some_module'

Но я пытаюсь работать с пакетом, который имеет пример использования:

var stuff = require('some_module')

Очевидно, мой код не работал, когда я использовал импорт и т. д., иначе я бы не публиковал здесь. Это потому, что я делаю что-то не так? Или мне не повезло, что именно этот модуль не работает с импортом? Может ли кто-нибудь пролить свет на то, как писать правильные операторы импорта, когда я вижу пример использования require('some_stuff'), чтобы я мог использовать другие модули, которые я загружаю из npm?

заранее спасибо.

РЕДАКТИРОВАТЬ: Итак, я попробовал npm install requirejs --save. Затем я написал требуемый оператор выше. Но у меня на упаковке 404...


person user691856    schedule 23.02.2017    source источник
comment
Вы имеете в виду, что хотите использовать require в узле, верно?   -  person Sandesh K    schedule 23.02.2017
comment
Я предполагаю, что моя путаница в том, есть ли эквивалент для импорта? Или я должен просто написать require в моих компонентах angular2?   -  person user691856    schedule 23.02.2017
comment
По сути, обе вещи выполняют для вас одну и ту же работу... То, что вы используете в angular, в более новом синтаксисе из ES6, а в узле вы используете старый синтаксис из ES5... (ES5 и ES6 - это название версии для JS)... Мое мнение: вам следует использовать более новый синтаксис (вы можете получить его с новой версией узла, т.е. 6.9, или использовать babel в более старой версии)   -  person Sandesh K    schedule 23.02.2017
comment
а, хорошо, но мой оператор импорта не работает для меня. Я получаю 404 при обнаружении пакета. в частности, это пакет googleapis. Я попытался получить requirejs и использовать его как пример использования, но у меня это все равно не сработало.   -  person user691856    schedule 23.02.2017
comment
поэтому я импортирую {google} из 'googleapis'   -  person user691856    schedule 23.02.2017
comment
Node пока не поддерживает синтаксис импорта/экспорта.   -  person Ali Gajani    schedule 23.02.2017
comment
@AliGajani, вы имеете в виду, что googleapis еще не поддерживает импорт/экспорт? потому что я могу без проблем импортировать функции angular2. Также я попытался выполнить npm install requirejs и использовать синтаксис require, то есть require('googleapis'), но по какой-то причине это тоже не работает.   -  person user691856    schedule 23.02.2017
comment
Я думал, вы делаете импорт/экспорт на node. Независимо от каких-либо API, узел пока их не поддерживает. Вам придется использовать require. Если я неправильно понял ваш вопрос, простите меня.   -  person Ali Gajani    schedule 23.02.2017


Ответы (2)


Вы можете использовать импорт, но ваше приложение должно запускаться с помощью Babel.

вы должны добавить эту строку в свой файл package.json

"scripts": {
    "start": "NODE_ENV=production node_modules/.bin/babel-node --presets 'es2015' src/server.js",  
    "build": "NODE_ENV=production node_modules/.bin/webpack -p"
  },
  "dependencies": {
    "babel-cli": "^6.11.4",
    "babel-core": "^6.13.2",
    "babel-loader": "^6.2.5",
    "babel-preset-es2015": "^6.13.2"
  },
  "devDependencies": {
    "http-server": "^0.9.0",
    "webpack": "^1.13.2",
    "webpack-dev-server": "^1.14.1"
  }

Файл src/server.js — это ваше основное местоположение.

а затем запустите файл с помощью следующей команды

npm run start

когда вы используете import { stuff } from 'module';, вы можете напрямую использовать stuff() в своей программе.

но когда вы используете var stuff = require('module');, вам нужно сделать stuff.stuff() в вашей программе.

person Shubham Batra    schedule 23.02.2017
comment
вау, интересно, если это так, мне нужно будет вернуться и реорганизовать/изменить мой код, как только он будет поддерживаться? - person user691856; 23.02.2017
comment
да если хочешь. вы можете взять другой пример из github.com/500tech/nodejs-express-es6 - person Shubham Batra; 23.02.2017

Интересно, что оригинальный синтаксис

var stuff = require('some_module')

не работает для вас. Если ваше приложение создано из Angular CLI, оно должно поддерживать как импорт, так и операторы require из коробки.

например, я использую MSR в компоненте Angular 2 следующим образом:

var MediaStreamRecorder = require('msr');
person Jim    schedule 23.02.2017
comment
кажется, когда я действительно требую, моя отладка облегченного сервера дает мне 404 для пакета, на который я указываю... Я не помню, чтобы мне приходилось указывать какой-либо относительный путь для требования, если он находится в папке node_modules? Я ошибаюсь? - person user691856; 23.02.2017