Node.js 如何拥有项目根目录的绝对require/import路径?

Node.js 如何拥有项目根目录的绝对require/import路径?,node.js,path,webpack,Node.js,Path,Webpack,我希望应用程序中的所有路径都与我的项目根相关,这样我就不必执行以下操作: import foo from "../../bar.js"; var foo = require("../../bar.js"); 我的应用程序客户端是使用Webpack编译的,所以我认为我可以使用Webpack中的“解析”功能,但我不希望这样做,因为这会增加对使用Webpack的依赖性。后端使用节点/Express服务器 是否有在前端和后端都有效的解决方案?在您的包中。在以下json路径脚本中添加ln-fsn../'

我希望应用程序中的所有路径都与我的项目根相关,这样我就不必执行以下操作:

import foo from "../../bar.js";
var foo = require("../../bar.js");
我的应用程序客户端是使用Webpack编译的,所以我认为我可以使用Webpack中的“解析”功能,但我不希望这样做,因为这会增加对使用Webpack的依赖性。后端使用节点/Express服务器


是否有在前端和后端都有效的解决方案?

在您的包中。在以下json路径
脚本中添加
ln-fsn../'node_modules/>。

{
  "scripts": {
    "postinstall": "ln -fsn ../ 'node_modules/>'"
  }
}
这将在项目的
节点_modules
中创建一个名为
的符号链接,该链接指向项目的根文件夹

假设您的文件结构如下所示:

project
├── bar.js
├── config
│   ├── database.js
│   ├── rabbitmq.js
│   └── env.js
├── seed
│   ├── soy.js
│   ├── wheat.js
│   ├── pumpkin.js
│   └── squash.js
├── foo
│   └── bar
│       └── baz
│           └── qux.js
├── index.js
└── package.json
require('>/seed/soy')
foo/bar/baz/qux.js
文件内部,我们可能需要
seed/soy.js
文件,如下所示:

project
├── bar.js
├── config
│   ├── database.js
│   ├── rabbitmq.js
│   └── env.js
├── seed
│   ├── soy.js
│   ├── wheat.js
│   ├── pumpkin.js
│   └── squash.js
├── foo
│   └── bar
│       └── baz
│           └── qux.js
├── index.js
└── package.json
require('>/seed/soy')

在您的package.json中,在以下json路径
脚本处添加
ln-fsn../'node_modules/>

{
  "scripts": {
    "postinstall": "ln -fsn ../ 'node_modules/>'"
  }
}
这将在项目的
节点_modules
中创建一个名为
的符号链接,该链接指向项目的根文件夹

假设您的文件结构如下所示:

project
├── bar.js
├── config
│   ├── database.js
│   ├── rabbitmq.js
│   └── env.js
├── seed
│   ├── soy.js
│   ├── wheat.js
│   ├── pumpkin.js
│   └── squash.js
├── foo
│   └── bar
│       └── baz
│           └── qux.js
├── index.js
└── package.json
require('>/seed/soy')
foo/bar/baz/qux.js
文件内部,我们可能需要
seed/soy.js
文件,如下所示:

project
├── bar.js
├── config
│   ├── database.js
│   ├── rabbitmq.js
│   └── env.js
├── seed
│   ├── soy.js
│   ├── wheat.js
│   ├── pumpkin.js
│   └── squash.js
├── foo
│   └── bar
│       └── baz
│           └── qux.js
├── index.js
└── package.json
require('>/seed/soy')

是否要在开发过程中从根目录引用依赖项?由于webpack创建了一个monolith包,因此在clientYes上没有问题,但在客户端和服务器上都没有问题。i、 e.在某些情况下,我有客户端和服务器都使用的文件,它们之间有相对路径的依赖关系。您可以创建一个符号链接,指向您的
src
目录,并将其放在
node\u modules
目录中:
ln-fs../src node\u modules/
。然后您可以
require('src/bar')
。这仅限于node_modules文件夹中的项目,那么我想从根目录中的其他文件夹导入/需要的任何其他文件呢,例如/seed、/config、/i18n、/shared?您可以创建一个名为
root
的符号链接,指向项目的根目录,并将其放在node_modules目录或其他目录下。然后您可以
require('root/seed/bar')
。您需要在项目的
postinstall
npm脚本期间创建此符号链接。是否要在开发过程中从根目录引用依赖项?由于webpack创建了一个monolith包,因此在clientYes上没有问题,但在客户端和服务器上都没有问题。i、 e.在某些情况下,我有客户端和服务器都使用的文件,它们之间有相对路径的依赖关系。您可以创建一个符号链接,指向您的
src
目录,并将其放在
node\u modules
目录中:
ln-fs../src node\u modules/
。然后您可以
require('src/bar')
。这仅限于node_modules文件夹中的项目,那么我想从根目录中的其他文件夹导入/需要的任何其他文件呢,例如/seed、/config、/i18n、/shared?您可以创建一个名为
root
的符号链接,指向项目的根目录,并将其放在node_modules目录或其他目录下。然后您可以
require('root/seed/bar')
。您将希望在项目的
postinstall
npm脚本期间创建此符号链接。在需要安装新软件包之前,此操作一直有效。除非我遗漏了什么,否则npm会出错。编辑:这仅适用于Yarnis works,直到您需要安装新软件包。除非我遗漏了什么,否则npm会出错。编辑:这只适用于纱线