NODE_PATH或zeit/now.sh上具有节点服务器的任何模块别名



使用@​now/node-server,我试图实现这一点:

const myLocalLibrary = require('@src/lib/myLocalLibrary');

代替

const myLocalLibrary = require('../../../lib/myLocalLibrary');

问题是,我尝试了很多不起作用的东西,包括:

设置NODE_PATH=src和使用require('src/...

不起作用,因为将NODE_PATH设置为env对没有影响

修补程序需要使用模块别名(https://www.npmjs.com/package/module-alias)

在本地工作,在Zeit上失败,因为节点找不到任何使用该模块的文件。

我用过:

require("module-alias").addAlias("~", __dirname);

有什么办法可以做到这一点吗?

您可以使用此

"build": {
"env": {
"NODE_PATH": "src/"
}
}

您的解决方案未能在ZEIT Now上构建的原因可能是只在运行时工作,现在需要在构建时解析路径。您可以尝试使用babel插件根导入,如这里所述。

或者,如果您只想在Next.js和ZEITNow中使用绝对导入,请参阅此问题。

最新更新