1

我应该如何为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文件。

此外,这些文件在客户端上使用了一个模拟 node.js require() 的 require() 函数,我不想使用相对路径。

问题是,当我调用require('anotherClass')它时,它必须在客户端和服务器上工作。所以使用相对路径可以工作,但我也有require('implementationClass')返回客户端实现或服务器实现的方法,当从common类中调用它们时,这种方法将失败。

4

2 回答 2

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被删除,因为它只会引起问题。

于 2013-01-02T22:04:42.247 回答
0
global.mod = function (file){
    return require (path.resolve ("../..", file));
};

var myClass = mod ("server/myClass");
var myOtherClass = mod ("common/myOtherClass");

将 require 与您自己的模块的相对路径一起使用是一种非常* 1/0 丑陋和糟糕的方法。

于 2013-01-02T22:36:10.300 回答