Zeit/pkg: не удается найти модуль «config»

Я свел эту проблему к простому тесту. Я использую модуль узла «config», чтобы определить значения конфигурации для моего приложения. Pkg не жалуется на сборку, но выдает следующее сообщение во время выполнения. Я что-то упускаю?

jim-macbookpro:~/development/node/pkgtest$ ./pkgtest-macos
pkg/prelude/bootstrap.js:1172
      throw error;
      ^

Error: Cannot find module 'config'
1) If you want to compile the package/file into executable, please pay attention to compilation warnings and specify a literal in 'require' call. 2) If you don't want to compile the package/file into executable and want to 'require' it from filesystem (likely plugin), specify an absolute path in 'require' call using process.cwd() or process.execPath.
    at Function.Module._resolveFilename (module.js:540:15)
    at Function.Module._resolveFilename (pkg/prelude/bootstrap.js:1269:46)
    at Function.Module._load (module.js:470:25)
    at Module.require (module.js:583:17)
    at Module.require (pkg/prelude/bootstrap.js:1153:31)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/snapshot/pkgtest/index.js:1:78)
    at Module._compile (pkg/prelude/bootstrap.js:1243:22)
    at Object.Module._extensions..js (module.js:650:10)
    at Module.load (module.js:558:32)

index.js прост:

const config = require('config');
console.log('yo:', config.message);

и у меня есть default.json в локальном каталоге config:

{
    "message": "whodapunk?"
}

Мой package.json, для чего он стоит:

{
    "name": "pkgtest",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "",
    "license": "ISC",
    "dependencies": {
        "config": "^1.30.0"
    },
    "bin": "index.js"
}

person Jim B.    schedule 24.04.2018    source источник
comment
Йоу, у меня точно такая же проблема. Радость вообще?   -  person Barrie Reader    schedule 25.01.2019


Ответы (2)


У меня была та же проблема, потому что мой файл конфигурации был добавлен в .gitignore - как только я удалил его оттуда, он заработал как шарм!

person Elon Zito    schedule 26.08.2018
comment
Хм. Я определенно зарегистрировал свой файл конфигурации. Не знаю, почему это важно. Возможно, вы одновременно что-то меняли? - person Jim B.; 10.09.2018

У меня была такая же проблема. Однако не очень красивое решение, мне удалось найти способ обойти его.

При вызове pkg я не устанавливаю e NODE_ENV. Затем в моей точке входа я проверяю, установлен ли NODE_ENV. Если нет, я определяю нужные мне переменные.

let port = null;
let db = null;
let name = null;

if (process.env.NODE_ENV) {
  const config = require('config');
  port = config.get('port');
  db = config.get('database');
  name = config.get('name');
} else {
  port = 3000;
  db = 'mongodb://localhost:27017/production';
  name = 'Server Production';
}

Я попытался напрямую подключиться к модулю конфигурации, но после этого он начал жаловаться, что не может найти файлы в моей папке конфигурации. Это сработало для меня как обходной путь.

person Ruud Verhoef    schedule 06.01.2020