我正在和实习生一起磨牙,发现这很难。我已将我的情况简化为interntest
具有基本 package.json 和单个模块的单个文件夹,其中包含我的 intern.js 和测试模块。
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.json
正确指定main: '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)
所以在 find 之后nedb/index.js
,它现在无法找到该文件中引用的相对路径,require('./lib/datastore')
.
显然我有一些基本的扭曲。有人可以建议吗?