2017-10-27 9 views
0

これは一般的な問題であるため、私はすでにGoogleで回答していますが、すべての回答がこれが機能しない理由を説明する代わりに代替手段を指しているため、ここで尋ねる。Atomのinit.coffeeでモジュールを要求する

私はアトムのinit.coffeeスクリプトにこのコードを置く:HTML

( 'がJS-美化')が必要です=美化 しかし、アトムはFailed to load init.coffeeCannot find module 'js-beautify'で失敗します。不思議なことに、これはパッケージで動作し、Atomのコンソールに全く同じコードを入力すると動作します。

もちろん、私はこのためのパッケージを書くことができました。実際にはカップルがあります。これは単なる例で、将来の調整のためにinit.coffeeからモジュールを要求する方法を学びたいからです。

ありがとうございます!

答えて

2

require()からinit.coffeeに至ると、Atomはそれらのモジュールのパスを探します。正規表現関数にアクセスするためにoni = require('oniguruma')があった場合の例です。

js-beautifyに到達するには、完全なパスを指定する必要があります。これまでのところ、唯一の明示的に全体の絶対パスを宣言することは私のために働いています。実際には

beaut = require 'C:\\Users\\<username>\\.atom\\packages\\atom-beautify\\node_modules\\js-beautify' 

console.log beaut 

を、このようにモジュールを使用するための最も確実な方法は、あなたのグローバルNPMフォルダにリンクできるように、それをインストールグローバルにあります。パッケージ内のモジュールへのリンクは、パッケージがアンインストールされていれば中断されます。

+0

オランダ:)これは多かれ少なかれ私が期待していたものですが、ここで見ている問題はアトムのコンソールで実際に 'require( 'js-beautify')を実行できることですモジュールがAtomに含まれていなくても、それを使用している他のパッケージから自分のマシンに入っていますか?それで、なぜ 'init.coffee'からうまくいかないのですか?そしてそれは私の2番目の質問につながります: 'js-beautify'が私のマシンにないとしましょう。 OK、なぜrequire( 'js-beautify')が 'atom-beautify'(Atomのパッケージ)から動作するのですか?それはパッケージによって必要とされるときAtomによってダウンロードされますか? –

+0

私はなぜあなたがコンソールからそれを得ることができるのかわかりませんが、 'init.coffee'ではありません。私は、しかし、それを動作させる方法を考え出したので、私は私の答えを編集しています。 –

+0

また、オランダの例をありがとう。私はコンソールから 'require'が動作している理由を知っていると思います。私は 'atom-beautify'をインストールしました。パッケージを削除しても、' js-beautify'モジュールは 'nodeからのある種のコンパイルキャッシュにまだ存在していました。私は知らない。事はモジュールがそこにあったことです。完全なパスが提供されていない限り、コンソールからではなく、 'init.coffee'からではないのですが、とにかく私の答えがうまくいきます!どうもありがとう! –

関連する問題