Knex の必須構成オプション「クライアント」が見つかりません 質問する

Knex の必須構成オプション「クライアント」が見つかりません 質問する

ここに私のファイルがあります。knexfile.js

require('dotenv').config();
module.exports = {
      development: {
        client: process.env.DB_CLIENT,
        connection: {
          host: process.env.DB_HOST,
          user: process.env.DB_USER,
          password: process.env.DB_PASSWORD,
          database: process.env.DB_NAME
        },
        migrations: {
          directory: __dirname + '/db/migrations'
        },
        seeds: {
          directory: __dirname + '/db/seeds'
        }
      }
    };

js の

const environment = process.env.NODE_ENV || 'development';
let config = require('../knexfile')[environment];
module.exports = require('knex')(config);

インデックス

require('babel-register');
import express from 'express';

const port = process.env.PORT || 5000;
const app = express();

app.listen(port, () => {
  console.log('Server running on portt:', port); // eslint-disable-line
});

export default app;

次のコマンドを実行すると、knex migrate:make create_employee_and_company_tables次のエラーが発生します。

Error: knex: Required configuration option 'client' is missing.
    at new Client (/Users/sujin.v2px/NodeJS/nodees6/node_modules/knex/lib/client.js:99:11)
    at Knex (/Users/sujin.v2px/NodeJS/nodees6/node_modules/knex/lib/index.js:56:34)
    at initKnex (/usr/local/lib/node_modules/knex/bin/cli.js:73:10)
    at Command.<anonymous> (/usr/local/lib/node_modules/knex/bin/cli.js:139:22)
    at Command.listener (/usr/local/lib/node_modules/knex/node_modules/commander/index.js:315:8)
    at emitTwo (events.js:126:13)
    at Command.emit (events.js:214:7)
   ...

何か設定が足りないのでしょうか?client足りないというのは、実際は何のことでしょうか?

ベストアンサー1

これは、Typescript を使用しているときに同じ問題が発生するため、ここにたどり着いた一部の人にとって役立つ回答です。(dotEnv の問題のポイントを超えて (これについては他の回答を確認してください))。

「クライアント」にエラーとTypescriptがありません

問題は、TypeScript がexport defaultデフォルトでは knex cli でサポートされていないことです。

説明する:

これは上記のエラーをスローして機能しません:ここに画像の説明を入力してください

そしてこの作品:ここに画像の説明を入力してください

ご覧のとおり、インポート構文なども含めて、TypeScript を通常どおり使用できます。その後、エクスポートするときに、commonjs 構文を直接使用する必要があります。

満足できない場合は、この github の問題で解決策を確認してください:

https://github.com/tgriesser/knex/issues/1232

knex が tsconfig.json をどのように解決するかはわかりません。 問題になるかもしれません。 また、knexfile.ts が配置されている場所に新しい tsconfig.json を追加することもできます。

私の場合、設定にそれがありました(プロジェクト ルートにあり、knexfile.ts [プロジェクト コンパイル用] の場所ではありませんでした)

  "compilerOptions": {
    /* Basic Options */
    // "incremental": true,                   /* Enable incremental compilation */
    "target": "ES2018",                          /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
    "module": "commonjs",                     /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
    // "lib": [],                             /* Specify library files to be included in the compilation. */
    "allowJs": true,     

ターゲットを変更したい場合があります。

node-tsもう 1 つの重要な点は、内部で使用されるため、インストールしておく必要があることです。ただし、インストールしないと、別の完全なエラーが発生する可能性があります。また、クライアントをインストールすることを忘れないでくださいǹpm i --save pg sqlite3 node-ts typescript knex。(開発依存関係を分離することをお勧めします)。

さらに調査した後で更新します。理由を詳しく説明します。

おすすめ記事