我应该如何为require配置多个路径?
我有以下结构:
application
|-server
| |-main.js
| |-myClass.js
| |-myClass.js
| |-implementationClass.js
|-common
| |-myOtherClass.js
| |-anotherClass.js
| |-yetAnotherClass.js
|-client
| |-aClientClass.js
| |-anotherClientClass.js
| |-implementationClass.js
我希望能够做到这样的事情:
require('myClass');
require('myOtherClass');
我应该如何配置多条路径?
目前使用require.paths
时出现错误:Error: require.paths is removed.
我想保留此结构,因为我的应用程序必须提供来自共享的静态.js
文件,并且我希望避免共享服务器端.js
文件。
此外,文件在客户端上使用require()函数,该函数模拟node.js require(),我不想使用相对路径。
问题是,当我呼叫require('anotherClass')
时,它必须在客户端和服务器上工作。因此,使用相对路径可以工作,但我也有require('implementationClass')
返回客户端实现或服务器实现,当从common
类调用它们时,这种方法将失败。
答案 0 :(得分:1)
要求子模块的最佳做法是使用相对路径:
require('./server/myClass');
require('./common/myOtherClass');
如果您使用的是requirejs,则可以为客户端配置别名:
require.config({
baseUrl: "http://example.com/static/",
paths: {
"myClass": "./server/myClass",
"myOtherClass": "./common/myOtherClass"
}
});
我建议做上面这样的事情,但如果你真的希望能够全局要求它们,你可以在启动应用程序之前设置或修改NODE_PATH
环境变量。 require.paths
已删除,因为它只会导致问题。
答案 1 :(得分:0)
global.mod = function (file){
return require (path.resolve ("../..", file));
};
var myClass = mod ("server/myClass");
var myOtherClass = mod ("common/myOtherClass");
对你自己的模块使用带有相对路径的require是一种非常难看的方法。