简体   繁体   English

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

[英]Zeit/pkg: Cannot find module 'config'

I've distilled this issue down to a simple test.我已经将这个问题提炼为一个简单的测试。 I'm using the node "config" module to define configuration values for my app.我正在使用节点“config”模块来定义我的应用程序的配置值。 Pkg doesn't complain on build, but barfs at runtime with the following message. Pkg 不会抱怨构建,但会在运行时发出以下消息。 Am I missing something?我错过了什么吗?

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 is simple: index.js 很简单:

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

and I have a default.json in the local 'config' directory:我在本地“config”目录中有一个 default.json:

{
    "message": "whodapunk?"
}

My package.json, for what it's worth:我的 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 - 一旦我从那里删除它,它就像一个魅力!

I just had the same issue.我只是有同样的问题。 However not a really beautiful solution I managed to find a way to work around it.然而,这并不是一个非常漂亮的解决方案,我设法找到了解决它的方法。

When calling pkg I do not set e NODE_ENV.调用 pkg 时,我没有设置 e NODE_ENV。 Then in my entry point I check if a NODE_ENV is set.然后在我的入口点我检查是否设置了 NODE_ENV。 If not I define the variables I need there.如果没有,我在那里定义我需要的变量。

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

I tried linking directly to the config module but after that it started complaining that it could not find and files in my config folder.我尝试直接链接到 config 模块,但之后它开始抱怨它在我的 config 文件夹中找不到文件。 This worked for me as a work around.这对我来说是一种解决方法。

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

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