`bar = require ('foo / bar')` когда `foo / bar` на самом деле` foo / lib / bar` [duplicate]

У вас может быть плохое соединение в вашем xib.

У меня была эта ошибка много раз. Хотя ответ TechZen абсолютно прав в этом случае, еще одной распространенной причиной является изменение имени свойства IBOutlet в вашем .h / .m, которое вы уже подключили к владельцу файла в nib.

Из вашего ниба:

  1. Выберите объект в IB и перейдите к «Инспектору подключений».
  2. В разделе «Резервные точки» убедитесь, что ваш объект еще не установлен связанный со старым именем свойства ... если это так, щелкните маленькое «x», чтобы удалить ссылку и построить снова. example 1 [/g2]

Еще одна распространенная причина, если вы используете Storyboard, ваш UIButton может иметь более одного присваивания (решение почти такое же, как для nib):

  1. Откройте раскадровку и щелкните правой кнопкой мыши UIButton
  2. . Вы увидите, что на этой кнопке есть несколько ссылок / ссылок. Удалите одно из окон «Main ...» с серым цветом с небольшим «x»:

35
задан Drahcir 19 May 2015 в 07:09
поделиться

5 ответов

package.json в основном используется файлом, используемым npm для установки и управления зависимостями.

Конструкция require не заботится о package.json, поэтому вы не сможете использовать это должно подорвать способ работы require и заставить его полагать, что пакеты не там, где их ожидает схема загрузки require.

См. документацию по https://nodejs.org/api /modules.html и схему загрузки здесь: https://nodejs.org/api/modules.html#modules_all_together

вы могли бы использовать технику, которая документация вызывает «Загрузка из глобальных папок» и определяет переменную среды NODE_PATH.

, но я советую вам придерживаться более стандартного способа: - поместите свои модули в каталог node_modules или запустите свой иерархии модулей в том же каталоге, где расположены ваши app.js или index.js

1
ответ дан Jerome WAGNER 22 August 2018 в 00:15
поделиться
  • 1
    Это для модуля, который я хочу опубликовать – Drahcir 18 May 2015 в 12:23

Для собственного решения см. эту проблему узла https://github.com/nodejs/node/issues/14970

Запрос функции предлагает поле mainDir в пакете.json рядом с основным.

Чем больше людей, которые голосуют, тем быстрее / более вероятно, что он будет реализован

4
ответ дан Jordan Whitfield 22 August 2018 в 00:15
поделиться

Теперь это уродливое обходное решение, и оно загрязняет корень вашего пакета. Но пока ответ Иордании не работает, это похоже на способ добиться того, что вы просите.

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

.
├── package.json
├── thing.js       <--
├── that.js        <--
├── src
|   ├── js
|   └────── lib
|   └───────── my
|   └───────────── thing.js
|   └───────────── that.js

Например, файл ./thing.js будет содержать:

module.exports = require('./src/js/lib/my/thing');

И поэтому вы можете потребовать его как:

const thing = require('mypackage/thing');

Также, как указано в ошибке о добавлении свойства mainDir в package.json , вы можете просто временно скопировать свои источники и файл package.json в один каталог и опубликовать оттуда.

0
ответ дан kub1x 22 August 2018 в 00:15
поделиться

В webpack вы можете указать resolve.alias следующим образом:

{
  resolve: {
    alias: {
      'my': 'my/src'
    }
  }
}

или вы можете указать опцию directions в package.json

{
  directions: {
    'lib': 'src/lib'
  }
}
0
ответ дан Stephen Rauch 22 August 2018 в 00:15
поделиться

Как сообщает doc :

Основное поле - это идентификатор модуля, который является основной точкой входа в вашу программу.

Итак, у вас будет что-то вроде "main": "src/js/lib/my/app.js" в вашем файле package.json.

Я предлагаю вам создать файл app.js и module.exports для ваших разных детей. Например:

 module.exports.thing = require('./thing');
 module.exports.that = require('./that');

И используйте их следующим образом:

var mylib = require('mylib')
  , thing = mylib.thing
  , that = mylib.that;
6
ответ дан Yann Bertrand 22 August 2018 в 00:15
поделиться
  • 1
    Мой пакет - уже существующая библиотека, я не могу изменить структуру. Мне просто нужно NPMify моей библиотеки. – Drahcir 18 May 2015 в 12:21
  • 2
    Почему добавление записей в package.json не изменяется, но добавление index.js есть? Это должен быть принятый ответ. – Stijn de Witt 1 September 2016 в 11:24
Другие вопросы по тегам:

Похожие вопросы: