bryan
bryan

Reputation: 9389

using PKG with featherjs app

Has anyone ever tried using pkg with featherjs before? I'm having trouble getting it to work.

I get the following error when running my executable:

WARNING: No configurations found in configuration directory:/../project/config
WARNING: To disable this warning set SUPPRESS_NO_CONFIG_WARNING in the environment.
pkg/prelude/bootstrap.js:1172
      throw error;
      ^

TypeError: root path required
    at Function.serveStatic [as static] (/snapshot/../project/node_modules/serve-static/index.js:40:11)

Not sure where to go from here if anyone has any guidance.

"bin": "src/index.js",
"scripts": {
  "test": "npm run eslint && npm run mocha",
  "dev": "./node_modules/nodemon/bin/nodemon.js src/",
  "eslint": "eslint src/. test/. --config .eslintrc.json",
  "mocha": "mocha test/ --recursive --exit",
  "start": "node src/",
  "pkg": "pkg . -t node9-macos-x64 --out-path pkg"
},
"pkg": {
  "assets": [
    "src/**/*",
    "public/**/*",
    "config/**/*",
    "node_modules/config/**/*.*"
  ],
  "scripts": [
    "src/**/*.js",
    "config/**/*.json"
  ]
},

Upvotes: 0

Views: 180

Answers (1)

Daff
Daff

Reputation: 44215

The error is coming from node-config used by @feathersjs/configuration which trying to load config/default.json from the folder of the running application, not the the bundled package. You can either try building with the NODE_CONFIG environment variable set to the content of config/defualt.json or remove app.configure(configuration()) and app.set the configuration options your application needs, for example by requiring config/default.json (which should also work in theh packaged environment):

const config = require('../config/default.json');

Object.keys(config).forEach(key => {
  app.set(key, config[key]);
});

Upvotes: 0

Related Questions