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

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

ただいまの
回答率

87.58%

Angular/node.js: 依存しているモジュールのrequireについて

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 5,498

score 13

 やりたいこと

Angularでアプリを起動したいです.

 実行環境

OS:Windows 7

以下はAngularに関わりそうなソフトウェアについて、です.

C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web>node -v
v8.9.4
C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web>ng -v

     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/


Angular CLI: 6.1.2
Node: 8.9.4
OS: win32 x64
Angular: 6.1.2
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.7.2
@angular-devkit/build-angular     0.7.2
@angular-devkit/build-optimizer   0.7.2
@angular-devkit/build-webpack     0.7.2
@angular-devkit/core              0.7.2
@angular-devkit/schematics        0.7.2
@ngtools/webpack                  6.1.2
@schematics/angular               0.7.2
@schematics/update                0.7.2
rxjs                              6.2.2
typescript                        2.7.2
webpack                           4.9.2
C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web>npm -v
5.6.0

 困っていること

npmでインストールしたパッケージの中に、過去モジュールだったが現在node.jsのcoreモジュールになっている(?)らしい
もの(fs, child_processなど)があり、起動時に以下のようなエラーメッセージが出てしまいます.
実行したコマンドは
ng serve
でした。

ERROR in ./node_modules/cluster/lib/master.js
Module not found: Error: Can't resolve 'child_process' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib'
ERROR in ./node_modules/cluster/lib/worker.js
Module not found: Error: Can't resolve 'child_process' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib'
ERROR in ./node_modules/cluster/lib/master.js
Module not found: Error: Can't resolve 'dgram' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib'
ERROR in ./node_modules/native-dns-cache/lookup.js
Module not found: Error: Can't resolve 'dgram' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\native-dns-cache'
ERROR in ./node_modules/native-dns/lib/utils.js
Module not found: Error: Can't resolve 'dgram' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\native-dns\lib'
ERROR in ./node_modules/native-dns/lib/server.js
Module not found: Error: Can't resolve 'dgram' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\native-dns\lib'
ERROR in ./node_modules/cluster/lib/master.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib'
ERROR in ./node_modules/cluster/lib/cluster.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib'
ERROR in ./node_modules/cluster/lib/plugins/cli.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib\plugins'
ERROR in ./node_modules/cluster/lib/plugins/logger.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib\plugins'
ERROR in ./node_modules/cluster/lib/plugins/reload.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib\plugins'
ERROR in ./node_modules/cluster/lib/plugins/pidfiles.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib\plugins'
ERROR in ./node_modules/cluster/lib/plugins/stats.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib\plugins'
ERROR in ./node_modules/log4js/lib/log4js.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\log4js\lib'
ERROR in ./node_modules/mkdirp/index.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\mkdirp'
ERROR in ./node_modules/native-dns/lib/platform.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\native-dns\lib'
ERROR in ./node_modules/cluster/lib/master.js
Module not found: Error: Can't resolve 'tty' in 'C:\Users\user\Desktop\pleiades\workspace\tm-root\task-manager-web\node_modules\cluster\lib'


ないからといってパッケージ名を指定してインストールしても、空のパッケージがインストールされてしまい、結局上記パッケージに依存しているパッケージが依存解決できない状態です.

 試したこと

何個かやってみたけどさっぱりでした。。

  • fsなどはnode.jsのどこかのバージョンからcoreになっているということで、ひとまずエラーが出ているrequire('fs')的な部分を全てコメントアウト
    -> 当然ながら解析不可ということで起動できず
  • node_modulesを一回まるごと削除して、再度npm install
    -> 上記エラーを取得し、未解決

 その他

抜けばええやん、と言われそうですがパッケージにlo4jsを追加したところ、起動しなくなってしまいました.
※逆にいえば、それまではng serveで起動できていました.

ウェブで検索しても、いまいち有益な情報が得られなかったので、質問いたしました.
知見をお貸しいただければ幸いです.

どうぞよろしくお願いいたします.

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 3

+1

npmでインストールしたパッケージの中に、過去モジュールだったが現在node.jsのcoreモジュールになっている(?)らしい

これは何処情報でしょうか?
日本語ドキュメントのv0.10時代のものを確認したところ、
エラーの原因となっている「File System」や「Child Processes」、「UDP / Datagram Sockets」等のモジュールは全て実装されています。
https://nodejs.org/docs/latest-v0.10.x/api/

0.12ならまだしも、0.10より古いとなるともう黎明期どころではなく、
恐らく4〜5年は古いはずであり、流石にそんなもん使うなよという話になります。

Angular CLIのGitHubを見ましたが、
2018/08/19現在、3日前にファイルが更新されている事からメンテナンスはきちんとされているようです。

いくらなんでもNode.jsのサポート対象から外れてしまっているバージョン4や0.12等より新しいものを想定しているはずです。
とまぁ、前提が誤っているんじゃないかな?という訳で軌道修正しましょう。


困っていること

そもそも何のコマンドを実行しようとしてエラーが出たのかがすっぽり抜けているので
当てずっぽうでの回答を強いられているわけですが、
まずはこんな感じで適当なフォルダを作成して、その中で下記のようなファイルを作って実行してみてください。

index.js

var fs = require('fs');
var hoge = fs. readFileSync(__dirname + '/hoge.txt');
console.log(hoge);

hoge.txt

hogehoge

ターミナルで実行

$ node index.js
hogehoge # 期待される出力文字列

本来ならばこの様に実行されるはずです。
しかし、質問文ではrequire('fs')と同時にエラーで死んでいるので、Node.js自体のインストールに失敗しているのではないかと私は疑っています。

同時に生成されたfsやchild_prosess等のJSファイルが格納されている場所にNode.js内のプログラムからアクセス出来ていない可能性があり、
質問文と同様に実行に失敗した場合、Node.jsのインストールに失敗しているのはほぼ確定でしょう。
一度Node.jsをアンインストールし、公式サイトからインストーラを実行して見てください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/08/19 14:06

    すみません、いろいろ情報が抜けてて申し訳なかったです。
    質問内容にてエラーが発生した際に実行したコマンドは

    ng serve

    でした。

    その上でなのですが、おっしゃる2つのファイルを作成して、そのDirectoryでコマンドを実行してみました。

    C:\Users\user\hogehoge>node index.js
    <Buffer 68 6f 67 65 68 6f 67 65>

    node.jsのインストールに失敗しているのでしょうか。。?
    また、以前これとは別にnode.jsで簡単なAPIを作成した際は、普通に動きました。
    そのため、node.jsそのものの欠損ではないのではないか、と思っています。

    キャンセル

  • 2018/08/19 14:15

    エラーを取得した際の実行コマンドを質問本文に追記しました。

    キャンセル

  • 2018/08/19 14:23

    > <Buffer 68 6f 67 65 68 6f 67 65>
    ああ、失礼しました。これはBufferのほげほげですね。
    fs.fileReadSyncで指定したファイルからはStringで取れる場合と、Bufferで取れる場合が2つありますので、`console.log(hoge.toString());`に変更してみてください。
    というわけで、おっしゃるようにNode.jsそのものはちゃんと動作しているようです。

    似た事例を探した所、Angular6とElectronを同時に入れて使おうとしたら大問題になってますね。
    他にもなんか色々と漁れば違う現象のエラーが出まくっており、どうも怪しい感じがしますね……
    https://github.com/angular/angular-cli/issues/10681

    キャンセル

  • 2018/08/19 14:28

    すいません私もファイルの読み書きが苦手なもので、そのままコピペしたものを動かしてしまいました。。
    そうですね、node.jsはちゃんとうごいてくれていそうです。

    参考URL、ありがとうございます。読んでみました。
    angular本体のバージョンの問題なのかもしれないですね。。
    よくよくもっかい確認してみたら、私のローカルは6系でした。。
    大変参考になりました、もう少し自分でも調べてみます。

    キャンセル

+1

プロジェクトのngとグローバルのngのバージョンに差異はないですか?
ng newで作成していると思うので初期のスクリプトなら

//package.json
  "scripts": {
    "start": "ng serve",

となっているはずです。

npm start

で起動してみてどうでしょうか。

https://mosapride.com/index.php/2018/08/10/post-1175/

 追記文

tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/08/20 08:04

    回答が遅くなってしまい、失礼いたしました。

    少し前のことなので既に記憶があやふやなのですが、基本的には記載いただいたように
    ng new project-name
    でプロジェクトを作成しました。
    その証左と言えるかと思いますが、package.jsonには以下の記述があります:
    "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
    }
    そして、つい数日前までは
    ng serve
    で起動できていました。

    上記質問内容に書いていない内容で大変恐縮なのですが、ロギング用にlog4jsを導入したあたりから
    いろいろ怪しかったです。。
    (抜けばいいと思うんですが、既にプログラムに入れてしまっており、いろいろ面倒だなと思っています。。)

    キャンセル

  • 2018/08/20 09:13

    ルートディレクトリのtsconfig.jsonの変更などは行ってないですか?
    Angular CLI: 6.1.4
    Node: 8.10.0
    OS: win32 x64
    Angular: 6.1.3で作成したプロジェクトのtsconfig.jsonを回答に追記します。

    キャンセル

  • 2018/08/20 09:30

    お返事ありがとうございます。
    変更していないと思います。
    最終更新日時 = 作成日時となっていましたし、私も変更を加えたきおくがありません。。

    キャンセル

check解決した方法

0

グローバル、プロジェクトのCLIのバージョンを下げる、等やってみましたがうまく解決できませんでした。
根本的にやり方を変えてみようと思いますので、本件ひとまず解決とします。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

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