Nodejs 有什么处理引用路径比较好的方法?每次 require('../../../utilities/string') 这样都得想好久

发布于 1周前 作者 eggper 来自 nodejs/Nestjs

Nodejs 有什么处理引用路径比较好的方法?每次 require(’…/…/…/utilities/string’) 这样都得想好久

react-native 似乎用了类似 @providesModule NavigationContainer 这样的方法来注册全局 module,但是好像需要预编译(貌似 watchman)支持? package.json 能否把项目中某个 js 文件注册为一个 module?

9 回复

好几种做法:本地 module , 私有 module
最简单的就是本地 module
package.json
{

“devDependencies”: {
“my-utils”: “/Users/xxx/my-utils”
}
}


也就是要有一个 map 吧

参考下这里: https://gist.github.com/branneman/8048520

目前我用 app-module-path 这个模块解决的, NODE_PATH 也是个不错方案

可以在编辑器里面装路径提示的插件…

楼上正解。 Tab 补全什么的最方便了。

可有采用 webpack 这样类似的工具打包呢?有的话,直接使用其提供的 alias 咯。

有什么好的类似插件推荐吗?用的 IDEA 好像自带的不够智能?

可以用 babel module-alias

在 Node.js 中处理引用路径时,确实可能会遇到路径过长或复杂的问题。以下是一些改进的方法:

  1. 使用 path 模块: 使用 Node.js 内置的 path 模块可以简化路径的拼接。

    const path = require('path');
    const utilitiesPath = path.join(__dirname, '..', '..', 'utilities', 'string');
    const stringUtils = require(utilitiesPath);
    
  2. 设置 NODE_PATH 环境变量: 你可以将项目的根目录添加到 NODE_PATH 环境变量中,然后在 require 时直接引用相对路径。

    export NODE_PATH=$(pwd)
    

    然后在代码中:

    const stringUtils = require('utilities/string');
    
  3. 使用模块别名(借助 Webpack 或 tsconfig.json): 如果你使用 Webpack 或 TypeScript,可以通过配置别名来简化路径。

    Webpack 配置示例

    resolve: {
      alias: {
        '[@utilities](/user/utilities)': path.resolve(__dirname, 'src/utilities'),
      },
    }
    

    然后在代码中:

    const stringUtils = require('[@utilities](/user/utilities)/string');
    
  4. 使用 require-hook 等第三方库: 还有一些第三方库如 require-hook 可以帮助你自动处理路径别名。

总之,选择哪种方法取决于你的项目结构和构建工具。希望这些方法能帮助你简化 Node.js 中的引用路径问题。

回到顶部