Node.js アプリケーションを作成しています。私はこの構造のプロジェクトを持っています:
[Project Folder]
|
|---[plc]
| |--- plc.js
| |--- scheduler.js
|
|---[source]
| |--- source.js
|
|---[test]
|--- test.js
ファイルplc.js、scheduler.js、およびsource.jsは「オブジェクト」であり、他のオブジェクトを必要とし、ファイルの最後にオブジェクトの「エクスポート」があります。特に、ファイルplc.jsには奇妙な動作があります。最初のコード:
var mod_pollist = require('./polling_list.js'); // Polling list.
var mod_operation = require('./operation.js'); // Single operation.
var mod_scheduler = require('./scheduler.js'); // Scheduler object.
var mod_events = require('events'); // Event emitter
var mod_util = require('../util.js'); // Util functions
function plc(comm_driver){
var self = this;
// Other variables are set here
}
// Other functions written as plc.prototype.something = function(parameters){...}
module.exports = plc;
奇妙な動作: 他のすべてのファイルには、ファイルの先頭にplc.js (var mod_plc = require('../plc/plc.js');
またはスケジューラー用) をインポートするためのコードがありますが、 test.jsvar mod_plc = require('./plc.js');
でのみ正しく動作します。
if(PLC instanceof mod_plc)
console.log('yes');
ファイルtest.jsで、コンソールに「はい」が表示されます。他のファイルに同じコードを書くと、エラーが発生します。
if(PLC instanceof mod_plc)
^
TypeError: Expecting a function in instanceof check, but got #<Object>
at Object.<anonymous> (C:\Users\Massimo\workspace\Scada\plc\scheduler.js:16:
19)
「一時的な解決策」は
if(PLC instanceof mod_plc.constructor)
console.log('yes');
しかし、他のすべてのオブジェクト( plc.jsのように20個以上のファイルを書いたことがあります)では、この問題は存在しないため、これが本当の解決策だとは思いません。
なにか提案を?もっと情報が必要ですか?ありがとう