2015-11-11 4 views
1

Я использую jspm в своем проекте.Как правильно использовать System.import()?

Но мне нужен файл 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 is not a function at Object. (/Users/joyfeel/javascript/jspm-test/index.js:49:16) at Module._compile (module.js:435:26) at normalLoader (/usr/local/lib/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:199:5) at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:216:7) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Function.Module.runMain (module.js:467:10) at Object. (/usr/local/lib/node_modules/babel/lib/_babel-node.js:144:25) at Module._compile (module.js:435:26) at Object.Module._extensions..js (module.js:442:10)

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

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

ответ

2

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

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

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

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

+0

Спасибо за ваш совет! :) – Joey

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