Как правильно использовать System.import ()?

Я использую jspm в своем проекте.

Но мне нужен файл nodejs на стороне сервера для выполнения некоторых инструкций.

Например, мне нужно использовать lodash и найти руководство в https://github.com/systemjs/systemjs < / а>

var System = require('jspm').Loader();
System.import('lodash').then(function (_) {  console.log(_); });

Однако я хочу использовать lodash глобально. Как

var _ = System.import('lodash');
var myArr = _.map([1, 2, 3], function(n) { return n * 3; });

Это покажет

TypeError: _.map не является функцией Object. (/Users/joyfeel/javascript/jspm-test/index.js:49:16) в Module._compile (module.js: 435: 26) в normalLoader (/ usr / local / lib / node_modules / babel / node_modules / babel -core / lib / api / register / node.js: 199: 5) в Object.require.extensions. (анонимная функция) [как .js] (/ usr / local / lib / node_modules / babel / node_modules / babel-core /lib/api/register/node.js:216:7) в Module.load (module.js: 356: 32) в Function.Module._load (module.js: 311: 12) в Function.Module.runMain ( module.js: 467: 10) в Object. (/usr/local/lib/node_modules/babel/lib/_babel-node.js:144:25) в Module._compile (module.js: 435: 26) в Object.Module._extensions..js (module.js : 442: 10)

Почему lodash используется только в .then области?

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


person Joey    schedule 11.11.2015    source источник


Ответы (1)


_ доступен только в рамках then, потому что System.import всегда возвращает Обещание. Поэтому вам нужно дождаться разрешения Promise, прежде чем вы сможете получить доступ к его результату. В любом случае я бы не рекомендовал вам использовать lodash во всем мире.

Но если вы действительно хотите использовать _ глобально, вы можете сделать что-то вроде:

System.import('lodash').then(function(_) {
    GLOBAL._ = _;
});

Тем не менее, вы должны убедиться, что весь код, который использует GLOBAL._, ждет, пока не будет разрешено обещание из импорта lodash. Но еще раз: я бы не рекомендовал вам делать это таким образом, но рекомендую вам импортировать lodash в каждый модуль, который в нем нуждается.

person brass monkey    schedule 11.11.2015
comment
Спасибо за ваш совет! :) - person Joey; 12.11.2015