узел + requirejs: модуль не определен - PullRequest
0 голосов
/ 24 января 2019

Получение ошибки module is not defined при попытке импортировать модуль из локального проекта.Использование node и requirejs -

Error: Evaluating /Users/Projects/stash/NODE/project_js/src/foo.js as module "foo" failed with error: ReferenceError: module is not defined

Код выглядит так -

(function() {

const requirejs = require('requirejs')

requirejs.config({
    baseUrl: __dirname,
    nodeRequire:require
});

//var foo = requirejs('foo.js');

requirejs(['foo'], function() {
foo().then(data => {
    data.foreach(function(item, index, data) {
      console.log(JSON.stringify(item))
      })
    });
  })

})();

Модуль имеет следующий экспорт -

module.exports = function foo() {
.
.
.
return results
}

Я пытался загрузить модульа также синхронно.

1 Ответ

0 голосов
/ 24 января 2019

Проверьте эту часть их документа: если загружаемый модуль (foo здесь) найден RequireJS (т.е. его конфигурация позволяет ему найти модуль), то этот модуль должен быть объявлено использование define вместо Node's exports.

Я только что попробовал это, который работает:

структура каталогов

test/
  index.js
  foo.js

index.js

(function() {

  const requirejs = require('requirejs');

  requirejs.config({
    baseUrl: __dirname,
    nodeRequire:require
  });

  requirejs(['foo'], (foo) => {
    console.log('loaded!', foo, foo());
  });
})();

foo.js (это интересная часть)

define(function() {
  return function foo() {
    return 'fooResult';
  }
});

Использование module.exports = ... дало мне ошибку, которая у вас есть.

Однако этот RequireJS API не «загружается» встроенным Node require, поэтому необходима точная конфигурация, которая отражает четкое разделение между модулями, необходимыми для Node ( CommonJS API ) и RequireJS модули ( AMD API ). (На самом деле вы можете проверить всю страницу «Почему AMD?» , которая очень поможет вам в работе с RequireJS.)

...