Node-redis: Hiredisがインストールされていません

作成日 2017年07月11日  ·  13コメント  ·  ソース: NodeRedis/node-redis

  • バージョン:2.7.1
  • プラットフォーム:Node.js 8.1.3 / macOS 10.12.5
  • 説明:プロジェクトでyarnまたはnpm installを実行した後、webpackビルドを生成しているときに、このエラーが発生しました
ERROR in ./node_modules/redis-parser/lib/hiredis.js
Module not found: Error: Can't resolve 'hiredis' in
error Command failed with exit code 2.

webpackの設定は次のとおりです。

var path = require('path')

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: ['babel-loader']
      }
    ]
  },
  target: 'node'
}

package.json

{
  "version": "1.0.0",
  "main": "src/index.js",
  "license": "MIT",
  "dependencies": {
    "dotenv": "^4.0.0",
    "koa": "^2.3.0",
    "koa-bodyparser": "^4.2.0",
    "koa-router": "^7.2.1",
    "node-fetch": "^1.7.1",
    "redis": "^2.7.1"
  },
  "devDependencies": {
    "babel-cli": "^6.24.1",
    "babel-loader": "^7.1.1",
    "babel-plugin-transform-class-properties": "^6.24.1",
    "babel-plugin-transform-object-rest-spread": "^6.23.0",
    "babel-preset-env": "^1.5.2",
    "webpack": "^3.0.0"
  },
  "scripts": {
    "start": "node dist/bundle",
    "build": "webpack"
  },
  "babel": {
    "presets": [
      [
        "env",
        {
          "targets": {
            "node": "current"
          }
        }
      ]
    ],
    "plugins": [
      "transform-object-rest-spread",
      "transform-class-properties"
    ]
  }
}
invalid

最も参考になるコメント

実際、それはWebpackの問題ではありません。 これは、 redis-parserhiredisをどのように使用したかに関する問題です。 この問題は、 redis-parser 3.0にアップグレードすることで解決できます。これにより、この問題が正確に解決されます。

全てのコメント13件

それはwebpackに関連している必要があります。 webpack configでnodeExternalsプラグインを使用することで、この問題を解決しました。

const nodeExternals = require('webpack-node-externals')

module.exports = {
  ...
  externals: [nodeExternals()],
  target: 'node'
}

nodeExternalsは、サーバー側のバンドルでnode_modulesフォルダー内のモジュールをスキップします。

これはwebpackの問題です。

実際、それはWebpackの問題ではありません。 これは、 redis-parserhiredisをどのように使用したかに関する問題です。 この問題は、 redis-parser 3.0にアップグレードすることで解決できます。これにより、この問題が正確に解決されます。

@guidobouman node_redisをフォークしてその単一の依存関係をアップグレードせずにredis-parser 3.0を使用するにはどうすればよいですか? 私は何週間もこの問題の解決策を探していましたが、成功しませんでした。

@guidobouman Webpackの場合、有効なJSコードで問題ありません。 そうではないようで、それは悲しいことです。 それはさておき、なぜ誰かがredisでWebpackを使いたがるのだろうかと思います。 サーバー側のコードを縮小することはかなり悪い考えです。

@peterschussheim現時点では、node_redisで作業する能力があまりありませんが、それはかなり悲しいことです。 ただし、redisパーサーのみをアップグレードすることは、重大な問題になります。

@BridgeARhttps ://github.com/NodeRedis/node-redis-parser/pull/36を参照してください

欠落している参照は、Webpackの根本的な問題でした。 Hiredisを削除すると、そのバグも「巻き添え被害」として完全に修正されました。

サーバー関連のコードでwebpackを実行する理由については、サーバーレス環境で古いバージョンのNodeを実行し、インポートなどの最新の構文を使用できるようにしたい場合があります。 (https://github.com/serverless-heaven/serverless-webpack)

@peterschussheim node-redisredis-parserのバージョンをバンプする以外に、別のオプションがあります。自分hiredisをインストールしてください。 おそらくhiredisを使用していなくても、 redis-parserはそれが存在することを期待しています。

実際、 @ BridgeAR :これはバグ修正であるため、パッチバージョンのバンプになる可能性があります。 しかし、はい、かなり長い間EOLであったにもかかわらず、ノードバージョンは4未満になります。

@guidoboumanその提案をありがとうございました。 それは「ハック」ですが、この問題のために私がすでに持っているよりも多くの時間を無駄にすることができないので、私はそれを受け入れます。

おそらく、これは私自身またはコミュニティの他の人にとって「最新の」バージョンをリリースする良い機会です(ノード4のサポートのために、このような変更を延期していることは非常に悲しいことです)。

👎

誰かがこの問題を修正する方法を説明できますか? 直接依存関係としてhiredisを追加する必要がある理由がわかりません。 hiredisを使用しないことを提案する人もいますが、どうすればそれを達成できますか?
ドキュメントによると、デフォルトのパーサーはhiredisではありません。 最新バージョンを使用していますが、 hiredisはまだ必要です。 AWSラムダランタイムのバンドル時にWebpackが惨めに失敗します。

すべての調整(ターゲットへの変更:「ノード」と追加の「hiredis」のインストール)の後、まだあるようです
バンドルの問題。 WebpackでRedisを使用しようとすると、「Uncaught ReferenceError:require isnotdefined」が表示されます。

この問題は依然として関連しています。hiredisは結合されており、ノード12でのインストールに失敗したため、redis-parserはv3.0.0でそれを削除しますが、このパッケージは引き続きv2.6.0を使用します。

また、以下を介してparceljsとバンドルしようとしたときにこれが表示されます。

parcel build src/index.ts --bundle-node-modules --target node --no-source-maps --no-minify

バンドルすると何が得られるのか興味があります(ツリーの揺れ、コンテナ化の最適化など)。 縮小化の有無にかかわらず、これが機能した場合の結果を確認したいと思います。 今のところ、 npm installとフルビルドを使用します。

Hiredisは放棄されていません(最後のPRは10日前でした)。 ただし、3.0へのアップデートのためにPR @ sookollを楽しませたいと思います。

Hiredisは放棄されていません(最後のPRは10日前でした)。 ただし、3.0へのアップデートのためにPR @ sookollを楽しませたいと思います。

申し訳ありませんが、私は明らかにhiredis-nodeを意味します。 ここで誰かがノード環境について考えることができるとは思いませんでした。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

abhaygarg picture abhaygarg  ·  5コメント

juriansluiman picture juriansluiman  ·  3コメント

michaelwittig picture michaelwittig  ·  3コメント

Stono picture Stono  ·  6コメント

adamgajzlerowicz picture adamgajzlerowicz  ·  4コメント