繁体   English   中英

Zeit/pkg:找不到模块“配置”

[英]Zeit/pkg: Cannot find module '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);

我在本地“config”目录中有一个 default.json:

{
    "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"
}

我遇到了同样的问题,这是因为我的配置文件已添加到.gitignore - 一旦我从那里删除它,它就像一个魅力!

我只是有同样的问题。 然而,这并不是一个非常漂亮的解决方案,我设法找到了解决它的方法。

调用 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';
}

我尝试直接链接到 config 模块,但之后它开始抱怨它在我的 config 文件夹中找不到文件。 这对我来说是一种解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM