1

の関数呼び出しを持つモデルがありますがutil.endsWith(str, end)、util ファイルをインポートするのを忘れていました。通常、次のようなエラーが予想されます。

cannot call method 'endsWith' of undefinedまたはそのようなもの

しかし、私が得ているエラーは次のとおりです。

TypeError: Object #<Object> has no method 'endsWith'

util定義されていることを示します。console.log を実行したところ、 から取得したオブジェクトと同じであることがわかりましたrequire('util')

私は確かにこれで util モジュールを必要としませんでした.ファイルのどこにもそうする場所を見つけることができません.

興味深いことに、utilこのモジュールが別の場所から必要な場合にのみ定義されます。ファイルを実行しただけでutilは未定義です。

これは正常ですか?


私のファイルはそれほど複雑ではありません (各ファイルが 100 行未満) ですが、非常に基本的な例でそれを複製することはできませんでした。多分それは数レベルの深さでなければなりません。

node.js 0.10.12

4

2 に答える 2

0

これはreplとスクリプトインタープリターの問題だと思います。noderepl (または)を実行するとcoffee、実際にutil事前にインポートされたモジュールとして利用できるようです。ただし、それらを実行してスクリプト引数を渡すと、そこにutilはありません:

node -e 'console.log(util)'

[eval]:1
console.log(util)
            ^
ReferenceError: util is not defined
    at [eval]:1:13
    at Object.<anonymous> ([eval]-wrapper:6:22)
    at Module._compile (module.js:456:26)
    at evalScript (node.js:532:25)
    at startup (node.js:80:7)
    at node.js:901:3

ただし、repl の場合:

node
> util
{ format: [Function],
  deprecate: [Function],
  print: [Function],
  puts: [Function],......
于 2013-07-09T16:27:16.853 に答える