質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.61%

Node.jsで”sync-request"が使えない。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,502

score 15

はじめまして。JavaScriptを勉強し始めたばかりの初心者です。
requestを逐次、同期処理をしたく、
同期処理でrequestモジュールの戻り値を返す(Node.js)(非コールバック)
を参考に、利用しようとしております。

var request = require('sync-request');


のみのファイルを実行したところ、

module.js:487
    throw err;
    ^

Error: Cannot find module 'sync-request'
    at Function.Module._resolveFilename (module.js:485:15)
    at Function.Module._load (module.js:437:25)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Volumes/Macintosh HDD/JavaScript/Node/Node_testAsync.js:2:15)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)


といったエラーが表示されます。
"sync-request"モジュールのインストールに失敗しているのかと、
npm listを行ったところ、

/Users/ykmt-t
├── assert-plus@1.0.0
├─┬ request@2.81.0
│ ├── aws-sign2@0.6.0
│ ├── aws4@1.6.0
│ ├── caseless@0.12.0
│ ├─┬ combined-stream@1.0.5
│ │ └── delayed-stream@1.0.0
│ ├── extend@3.0.1
│ ├── forever-agent@0.6.1
│ ├─┬ form-data@2.1.4
│ │ ├── asynckit@0.4.0
│ │ ├── combined-stream@1.0.5 deduped
│ │ └── mime-types@2.1.16 deduped
│ ├─┬ har-validator@4.2.1
│ │ ├─┬ ajv@4.11.8
│ │ │ ├── co@4.6.0
│ │ │ └─┬ json-stable-stringify@1.0.1
│ │ │   └── jsonify@0.0.0
│ │ └── har-schema@1.0.5
│ ├─┬ hawk@3.1.3
│ │ ├─┬ boom@2.10.1
│ │ │ └── hoek@2.16.3 deduped
│ │ ├─┬ cryptiles@2.0.5
│ │ │ └── boom@2.10.1 deduped
│ │ ├── hoek@2.16.3
│ │ └─┬ sntp@1.0.9
│ │   └── hoek@2.16.3 deduped
│ ├─┬ http-signature@1.1.1
│ │ ├── assert-plus@0.2.0 extraneous
│ │ ├─┬ jsprim@1.4.1
│ │ │ ├── assert-plus@1.0.0 extraneous
│ │ │ ├── extsprintf@1.3.0
│ │ │ ├── json-schema@0.2.3
│ │ │ └─┬ verror@1.10.0
│ │ │   ├── assert-plus@1.0.0 extraneous
│ │ │   ├── core-util-is@1.0.2 deduped
│ │ │   └── extsprintf@1.3.0 deduped
│ │ └─┬ sshpk@1.13.1
│ │   ├── asn1@0.2.3
│ │   ├── assert-plus@1.0.0 extraneous
│ │   ├─┬ bcrypt-pbkdf@1.0.1
│ │   │ └── tweetnacl@0.14.5 deduped
│ │   ├─┬ dashdash@1.14.1
│ │   │ └── assert-plus@1.0.0 extraneous
│ │   ├─┬ ecc-jsbn@0.1.1
│ │   │ └── jsbn@0.1.1 deduped
│ │   ├─┬ getpass@0.1.7
│ │   │ └── assert-plus@1.0.0 extraneous
│ │   ├── jsbn@0.1.1
│ │   └── tweetnacl@0.14.5
│ ├── is-typedarray@1.0.0
│ ├── isstream@0.1.2
│ ├── json-stringify-safe@5.0.1
│ ├─┬ mime-types@2.1.16
│ │ └── mime-db@1.29.0
│ ├── oauth-sign@0.8.2
│ ├── performance-now@0.2.0
│ ├── qs@6.4.0
│ ├── safe-buffer@5.1.1
│ ├── stringstream@0.0.5
│ ├─┬ tough-cookie@2.3.2
│ │ └── punycode@1.4.1
│ ├─┬ tunnel-agent@0.6.0
│ │ └── safe-buffer@5.1.1 deduped
│ └── uuid@3.1.0
└─┬ sync-request@4.1.0
  ├── command-exists@1.2.2
  ├─┬ concat-stream@1.6.0
  │ ├── inherits@2.0.3
  │ ├─┬ readable-stream@2.3.3
  │ │ ├── core-util-is@1.0.2
  │ │ ├── inherits@2.0.3 deduped
  │ │ ├── isarray@1.0.0
  │ │ ├── process-nextick-args@1.0.7
  │ │ ├── safe-buffer@5.1.1 deduped
  │ │ ├─┬ string_decoder@1.0.3
  │ │ │ └── safe-buffer@5.1.1 deduped
  │ │ └── util-deprecate@1.0.2
  │ └── typedarray@0.0.6
  ├── get-port@3.1.0
  ├── http-response-object@1.1.0
  └─┬ then-request@2.2.0
    ├── caseless@0.11.0 extraneous
    ├── concat-stream@1.6.0 deduped
    ├─┬ http-basic@2.5.1
    │ ├── caseless@0.11.0 extraneous
    │ ├── concat-stream@1.6.0 deduped
    │ └── http-response-object@1.1.0 deduped
    ├── http-response-object@1.1.0 deduped
    ├─┬ promise@7.3.1
    │ └── asap@2.0.6
    └── qs@6.4.0 deduped


といった感じで、"sync-request"はインストールできているように思われます。
ただし、
npm listのエラー
と言った感じで、エラーが多数あります。

npm-install-missingを実行したところ、
npm-install-missing: No modules seem to be missing.  Huzzah!
と、表示されます。

また、エラーのあるcaselessについて
install caseless --save-dev
を実行したところ、
実行イメージ
といったように表示されます。

現在の環境は、
macOS Sierra 10.12.6
node -v : v8.2.1
npm -v  : 5.3.0
になります。

sync-requestモジュールが使えるように、改善方法をご教授いただければと存じます。
また、npm ERR!についても、改善方法をご教授いただければと存じます。

以上、よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

Windows10で同様の操作を行ってみましたが、再現させることができませんでした。

ただ、extraneousというキーワードが気になったので、調べたところ以下の記事がヒットしました。
extraneous dependencies in npm package #151

結論としては、npm3にバグがあるのではないかということでした。
「同期処理でrequestモジュールの戻り値を返す(Node.js)(非コールバック)」という記事自体は特に問題がないみたいですので、npmのパッケージが入ってない空のディレクトリでrequest, sync-requestだけインストールしてみて再現するか確認してみてください。

それで問題が発生しなかった場合は、npmのパッケージの構築方法を再検討してみてください。実際に使うパッケージだけインストールする、インストールする順番を入れ替える、といったことです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/17 01:45

    回答ありがとうございます。
    調べてみたところ、モジュールのインストール先に問題があるような感じがしてきました。
    もう少し、自分の環境を調べて、質問させていただこうと思います。
    今回はありがとうございました。

    キャンセル

  • 2017/08/23 22:41

    お世話になりました。
    気分転換を兼ねて、OSの再インストールから環境を再構築しました。
    時間がかかりましたが、Node.jsの環境も含めて再構築でき、参考ページのプログラムの方も動作確認ができました。
    extraneousの問題に関しては、解消できておりませんが、時間を見ながら研究してみようと思います。
    本当に、ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る