我有一个很好的大型项目。 今天,我意识到我需要在一堂课中改变一种方法。 因此,我通过仅添加一行更改了Task.destroy()中的一种方法:
public destroy(clientId: string, userData: UserData, taskData: TaskData): Promise<boolean> {
const tasks = Task.getTasks();
new --> const lists = List.getLists();
assert(Model.isDataOnly(taskData));
// remove this task from all the lists....
}
在进行此更改之前,我的服务器按预期运行。 发生重大变化之后,运行服务器时,我看到:
NODE_ENV: ====================[ development: laptop.dynazu.com ]====================
DOMAIN:https://laptop.dynazu.com
Debugger listening on ws://127.0.0.1:9229/cb0c2453-7991-4e7e-8cc1-c81afa519198
For help, see: https://nodejs.org/en/docs/inspector
/home/joel/workspace/Tracker/server/api/user/user.controller.js:75
var users = _user2.User.getUsers();
^
TypeError: Cannot read property 'getUsers' of undefined
at Object.<anonymous> (user.controller.ts:34:20)
at Module._compile (internal/modules/cjs/loader.js:759:30)
at Module._compile (/home/joel/workspace/Tracker/node_modules/pirates/lib/index.js:99:24)
at Module._extensions..js (internal/modules/cjs/loader.js:770:10)
at Object.newLoader [as .js] (/home/joel/workspace/Tracker/node_modules/pirates/lib/index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:628:32)
at Function.Module._load (internal/modules/cjs/loader.js:555:12)
at Module.require (internal/modules/cjs/loader.js:666:19)
at require (internal/modules/cjs/helpers.js:16:16)
at Object.<anonymous> (index.ts:3:1)
at Module._compile (internal/modules/cjs/loader.js:759:30)
at Module._compile (/home/joel/workspace/Tracker/node_modules/pirates/lib/index.js:99:24)
at Module._extensions..js (internal/modules/cjs/loader.js:770:10)
at Object.newLoader [as .js] (/home/joel/workspace/Tracker/node_modules/pirates/lib/index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:628:32)
at Function.Module._load (internal/modules/cjs/loader.js:555:12)
起初,我认为ng或构建工具可能存在问题。但是,当我对生成的代码(js等)进行比较时,除了微小的预期变化之外,没有任何变化。
然后查看错误和堆栈跟踪,看来这可能是加载问题???有人看到过这样的东西吗?
user.controller.ts:34是:
const users = User.getUsers();
和User.getUsers非常简单:
public static getUsers(): monk.ICollection<UserData> {
log('getUsers()...', db);
return db.get('users');
}
这显然是从来没有达到过的。因此,这似乎是一个负载问题?也许节点babel?
有没有一种方法可以在没有node-babel的情况下进行测试?
从某种意义上说,我回答了如何使用babel而不是node-babel。
为此,我复制了已经用打字稿转换为E6代码的代码的相关部分。然后我做了
node_modules/.bin/bower src -d output
然后做
node output/app.js
希望我会成功。相反,我看到了:
NODE_ENV: ====================[ development: laptop.dynazu.com ]====================
DOMAIN:https://laptop.dynazu.com
/home/joel/workspace/Tracker/server/output/api/user/user.controller.js:75
var users = _user2.User.getUsers();
^
TypeError: Cannot read property 'getUsers' of undefined
at Object.<anonymous> (/home/joel/workspace/Tracker/server/output/api/user/user.controller.js:75:25)
at Module._compile (internal/modules/cjs/loader.js:759:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
at Module.load (internal/modules/cjs/loader.js:628:32)
at Function.Module._load (internal/modules/cjs/loader.js:555:12)
at Module.require (internal/modules/cjs/loader.js:666:19)
at require (internal/modules/cjs/helpers.js:16:16)
at Object.<anonymous> (/home/joel/workspace/Tracker/server/output/api/user/index.js:9:42)
at Module._compile (internal/modules/cjs/loader.js:759:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
at Module.load (internal/modules/cjs/loader.js:628:32)
at Function.Module._load (internal/modules/cjs/loader.js:555:12)
at Module.require (internal/modules/cjs/loader.js:666:19)
at require (internal/modules/cjs/helpers.js:16:16)
at Object.<anonymous> (/home/joel/workspace/Tracker/server/output/auth/auth.service.js:18:14)
at Module._compile (internal/modules/cjs/loader.js:759:30)
与以前完全相同!
至少现在我拥有完全翻译的js,并且能够确定babel翻译中似乎有什么破损! (我希望:-)。
问题比预期的要糟。查看生成的代码,似乎没有任何问题。似乎负载本身正在中断,因为我现在直接使用babel并运行“ node app.js” ... 我们将看到...。
加载本身会引发一个错误并删除该模块,因此我看到此错误与“ TypeError:无法读取未定义的属性'getUsers'的定义”无关,这是一条红色的鲱鱼...我正在更深入地研究...但在这一点上一点儿也不了解。
答案 0 :(得分:0)
经过反复的摸索和挫折,我发现我必须删除类导出中的任何间接内容。例如清单,我有一个list / index.ts:
-export * from './list.model';
-export * from './list.listData';
然后将使用诸如:
import { List, ListData } from '../list';
但是这种类型的间接转换将使用babel进行转换,以创建在加载时崩溃的模块!有奇怪的错误。
当我将上面的导入更改为:
import { List } from '.../list/list.model';
import { ListData } from '.../list/listData';
所有组件都可以编译并运行,并且没有问题。
我希望这对其他人有帮助!