私はインターンで歯を切っていて、かなり難しいと感じています。interntest基本的な package.json と、intern.js とテスト モジュールを含む 1 つのモジュールを含む 1つのフォルダーに状況を簡略化しました。
interntest/
package.json
src/
mymodule/
test/
intern.js
MyTest.js
私のpackage.jsonは、このディレクトリでノードを実行するために必要な基本的な依存関係をリストしています:
{
"name": "interntest",
"version": "1.0.0",
"dependencies": {
"intern": "1.3.2",
"nedb": "~0.9.3",
"nodemailer": "~0.5.14",
"requirejs": "",
"dojo": "1.9.2"
}
}
npm installこれらの依存関係を取得するようになりました。
当面の問題は、使用しようとしているモジュールnedbとモジュールにあります。nodemailer次のように intern.js で簡単に宣言できると思っていました。
loader: {
// Packages that should be registered with the loader in each testing environment
packages: [
'node',
'nedb',
'nodemailer',
MyTest.js で必要なのは、次のとおりです。
define([
'intern!tdd',
'intern/chai!assert',
'nedb',
'nodemailer'
], function (test, assert, Datastore, nodemailer) {
しかし、正しく指定しているnedbにもかかわらず、ロードできないようです。node_modules/nedb/package.jsonmain: 'index'
neek@alyssa:~/src/interntest$ ./node_modules/.bin/intern-client config=src/mymodule/test/intern suites=mymodule/test/MyTest
Defaulting to "console" reporter
Error: Failed to load module nedb/main from /home/neek/src/interntest/node_modules/nedb/main.js (parent: mymodule/test/MyTest)
at /home/neek/src/interntest/node_modules/intern/node_modules/dojo/dojo.js:742:12
at fs.js:207:20
at Object.oncomplete (fs.js:107:15)
これを回避するために、私はこれをMyTest.js:
define([
'intern!tdd',
'intern/chai!assert',
'nedb/index',
'nodemailer/lib/nodemailer'
これは間違っているように見えますが、少なくとも、これらのモジュールから .js ファイルをロードする際の最初の失敗を回避できます。ただし、これには致命的な欠陥があるようです。
neek@alyssa:~/src/interntest$ ./node_modules/.bin/intern-client config=src/mymodule/test/intern suites=mymodule/test/MyTest
Defaulting to "console" reporter
Error: Attempt to require unloaded module lib/datastore
at contextRequire (/home/neek/src/interntest/node_modules/intern/node_modules/dojo/dojo.js:255:12)
at req (/home/neek/src/interntest/node_modules/intern/node_modules/dojo/dojo.js:30:10)
at /home/neek/src/interntest/node_modules/nedb/index.js:7:17
at Function.vm.runInThisContext (/home/neek/src/interntest/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16)
at /home/neek/src/interntest/node_modules/intern/node_modules/dojo/dojo.js:745:8
at fs.js:266:14
at Object.oncomplete (fs.js:107:15)
そのため、 を見つけた後nedb/index.js、そのファイル内で参照されている相対パスを見つけることができなくなりましたrequire('./lib/datastore')。
明らかに、私は基本的なものをひねりました。誰かアドバイスしてもらえますか?