我正在尝试使用requireJs()函数加载脚本,基于requirejs。
这是我的app.js:
// Other stuff...
__config.path.base = __dirname + '/../';
requireJs = require('requirejs'),// To use to require AMD typescript files.
requireJs.config({
baseUrl: __config.path.base,
nodeRequire: require
});
但是我遇到了一个问题......这个脚本实际上不是app.js,它是/config/boostrap.js,现在,如果我要导入文件/api/db/models/UserModel.ts
中的文件,路径是实际上是'/$APPPATH/'
而不是'/$APPPATH/api/db/models/'
所以,当我尝试导入时,来自/api/db/models/UserModel.ts:
import model = require('./Model');
失败,因为它尝试加载文件'/$APPPATH/Model.js'
而不是'/$APPPATH/api/db/models/Model.ts'
。
如果我尝试以不同的方式导入:
import model = require('./../api/db/models/Model');
Typescript显示错误,不再编译,因为它找不到文件。
那么,我该如何解决这个问题呢?我的解决方案是改变编译模式,不要使用requireJs将文件加载到/ api(CommonJs),但是我不确定以后会不会遇到其他问题,我宁愿在任何地方使用相同的编译模式这是可能的!
答案 0 :(得分:0)
Typescript的import语句(使用requireJS)将始终使用应用程序根路径作为起点,编译器也是如此。
来自/api/db/models/UserModel.ts:
import model = require('api/db/models/Model');
确保Model.ts的结构类似于......
class Model {
...
}
export = Model;