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

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

ただいまの
回答率

87.48%

既存のリポジトリにライブラリを追加するには?

解決済

回答 1

投稿 編集

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

score 18

node、webpackのビギナーです。

GASをTypeScriptで書くために以下の記事を参考に環境を用意しました。

Google Apps Script をローカル環境で快適に開発するためのテンプレートを作りました - Qiita

ビルドやデプロイも問題なくできたため、実際にコードを書き始め、HTMLをパースする必要があったためcheerio-httpcliを使うことにしました。

Node.js用のスクレイピングモジュール「cheerio-httpcli」の紹介 - Qiita

以下のコマンドでcheerio-httpcliをインストールしました。

npm install --save-dev  cheerio-httpcli

インストールは問題なく終わり、package.jsondevDependenciesにも"cheerio-httpcli": "^0.7.2",が追加されたことを確認しました。

./src/index.tsの1行目にvar client = require('cheerio-httpcli');と追記してnpm run buildを実行するとエラーがでました。

ERROR in ./node_modules/cheerio-httpcli/index.js
Module not found: Error: Can't resolve './lib/core' in 'C:\Users\eai\source\repos\clasp\node_modules\cheerio-httpcli'
 @ ./node_modules/cheerio-httpcli/index.js 1:17-38
 @ ./src/index.ts

.\node_modules\cheerio-httpcli\libを確認したところcore.jsが存在していました。

調べるとこのjsをwebpackが読めていないためと分かったため、
webpack.config.json

  resolve: {
    extensions: [".ts",".js"]
  },


と追記してjsを読むようにしました。

再びnpm run buildを実行するとエラーがでました。

> gas-clasp-starter@1.0.0 build C:\Users\eai\source\repos\clasp
> npm run lint && npm run test && rimraf dist && webpack && cpx src/appsscript.json dist


> gas-clasp-starter@1.0.0 lint C:\Users\eai\source\repos\clasp
> tslint --fix src/**/*.ts


> gas-clasp-starter@1.0.0 test C:\Users\eai\source\repos\clasp
> jest

Hash: 7a2d20fb0c2d46d91615
Version: webpack 4.1.1
Time: 5489ms
Built at: 2018-4-11 17:02:33
    Asset      Size  Chunks                    Chunk Names
bundle.js  3.82 MiB    main  [emitted]  [big]  main
Entrypoint main [big] = bundle.js
   [0] util (ignored) 15 bytes {main} [built]
   [1] util (ignored) 15 bytes {main} [built]
   [2] readable-stream (ignored) 15 bytes {main} [built]
   [3] buffer (ignored) 15 bytes {main} [optional] [built]
   [4] crypto (ignored) 15 bytes {main} [optional] [built]
[./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 519 bytes {main} [built]
   [5] crypto (ignored) 15 bytes {main} [built]
[./node_modules/cheerio-httpcli/lib sync recursive] ./node_modules/cheerio-httpcli/lib sync 160 bytes {main} [optional] [built]
[./node_modules/cheerio-httpcli/lib/cheerio sync recursive ^\.\/.*$] ./node_modules/cheerio-httpcli/lib/cheerio sync ^\.\/.*$ 388 bytes {main} [built]
[./node_modules/require-uncached sync recursive] ./node_modules/require-uncached sync 160 bytes {main} [built]
   [6] vertx (ignored) 15 bytes {main} [optional] [built]
[./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 509 bytes {main} [built]
[./src/index.ts] 403 bytes {main} [built]
    + 492 hidden modules

WARNING in ./node_modules/require-uncached/index.js
28:8-25 Critical dependency: the request of a dependency is an expression
 @ ./node_modules/require-uncached/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

WARNING in ./node_modules/cheerio-httpcli/lib/encoding.js
49:24-39 Critical dependency: the request of a dependency is an expression
 @ ./node_modules/cheerio-httpcli/lib/encoding.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

WARNING in ./node_modules/spawn-sync/lib/spawn-sync.js
Module not found: Error: Can't resolve 'try-thread-sleep' in 'C:\Users\eai\source\repos\clasp\node_modules\spawn-sync\lib'
 @ ./node_modules/spawn-sync/lib/spawn-sync.js 10:10-37
 @ ./node_modules/spawn-sync/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/spawn-sync/index.js
Module not found: Error: Can't resolve 'child_process' in 'C:\Users\eai\source\repos\clasp\node_modules\spawn-sync'
 @ ./node_modules/spawn-sync/index.js 3:17-41
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/spawn-sync/lib/spawn-sync.js
Module not found: Error: Can't resolve 'child_process' in 'C:\Users\eai\source\repos\clasp\node_modules\spawn-sync\lib'
 @ ./node_modules/spawn-sync/lib/spawn-sync.js 6:9-33
 @ ./node_modules/spawn-sync/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/request/lib/har.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\eai\source\repos\clasp\node_modules\request\lib'
 @ ./node_modules/request/lib/har.js 3:9-22
 @ ./node_modules/request/request.js
 @ ./node_modules/request/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/spawn-sync/lib/spawn-sync.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\eai\source\repos\clasp\node_modules\spawn-sync\lib'
 @ ./node_modules/spawn-sync/lib/spawn-sync.js 4:9-22
 @ ./node_modules/spawn-sync/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/require-uncached/node_modules/resolve-from/index.js
Module not found: Error: Can't resolve 'module' in 'C:\Users\eai\source\repos\clasp\node_modules\require-uncached\node_modules\resolve-from'
 @ ./node_modules/require-uncached/node_modules/resolve-from/index.js 3:13-30
 @ ./node_modules/require-uncached/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/forever-agent/index.js
Module not found: Error: Can't resolve 'net' in 'C:\Users\eai\source\repos\clasp\node_modules\forever-agent'
 @ ./node_modules/forever-agent/index.js 6:10-24
 @ ./node_modules/request/request.js
 @ ./node_modules/request/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/tough-cookie/lib/cookie.js
Module not found: Error: Can't resolve 'net' in 'C:\Users\eai\source\repos\clasp\node_modules\tough-cookie\lib'
 @ ./node_modules/tough-cookie/lib/cookie.js 32:10-24
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/tunnel-agent/index.js
Module not found: Error: Can't resolve 'net' in 'C:\Users\eai\source\repos\clasp\node_modules\tunnel-agent'
 @ ./node_modules/tunnel-agent/index.js 3:10-24
 @ ./node_modules/request/lib/tunnel.js
 @ ./node_modules/request/request.js
 @ ./node_modules/request/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/forever-agent/index.js
Module not found: Error: Can't resolve 'tls' in 'C:\Users\eai\source\repos\clasp\node_modules\forever-agent'
 @ ./node_modules/forever-agent/index.js 7:10-24
 @ ./node_modules/request/request.js
 @ ./node_modules/request/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

ERROR in ./node_modules/tunnel-agent/index.js
Module not found: Error: Can't resolve 'tls' in 'C:\Users\eai\source\repos\clasp\node_modules\tunnel-agent'
 @ ./node_modules/tunnel-agent/index.js 4:10-24
 @ ./node_modules/request/lib/tunnel.js
 @ ./node_modules/request/request.js
 @ ./node_modules/request/index.js
 @ ./node_modules/cheerio-httpcli/lib/client.js
 @ ./node_modules/cheerio-httpcli/lib/core.js
 @ ./node_modules/cheerio-httpcli/index.js
 @ ./src/index.ts

Critical dependency: the request of a dependency is an expression
Module not foundを解決する必要がありそうですが、調べてもわかりませんでした。

この後どうすればビルドできるようになるのでしょうか

 環境

  • Windows 7
  • node v8.11.1
  • npm 5.6.0
  "devDependencies": {
    "@types/google-apps-script": "0.0.21",
    "@types/jest": "^22.2.0",
    "cheerio-httpcli": "^0.7.2",
    "cpx": "^1.5.0",
    "gas-webpack-plugin": "^0.2.1",
    "jest": "^22.4.2",
    "prettier": "^1.11.1",
    "rimraf": "^2.6.2",
    "ts-jest": "^22.4.1",
    "ts-loader": "^4.0.1",
    "tslint": "^5.9.1",
    "tslint-config-prettier": "^1.10.0",
    "tslint-plugin-prettier": "^1.3.0",
    "typescript": "^2.7.2",
    "typings": "^2.1.1",
    "webpack": "^4.1.1",
    "webpack-cli": "^2.0.12"
  },
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

エラーの出ているchild_processfsNode.js組み込みのモジュールなので、ブラウザやGASなど、Node.js以外の環境では動きません。

当該のQiita記事のタイトルにもありますように、このcheerio-httpcliNode.js環境で動かす専用です。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/04/11 17:19

    `cheerio-httpcli`と`cheerio`を同一のものと勘違いしていました……。
    普通に`cheerio`をインストールして`require`するのは問題なくできました。ありがとうございました。

    キャンセル

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

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

関連した質問

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