相关疑难解决方法(0)

运行Node脚本时,在当前shell上下文中更改工作目录

我正在尝试从bin脚本运行时更改我的Node.js脚本的工作目录.我有以下内容:

#!/usr/bin/env node
process.chdir('/Users')
Run Code Online (Sandbox Code Playgroud)

当我随后运行此文件时./bin/nodefile,它会退出,但当前shell上下文的工作目录没有更改.我也试过shelljs,但这也不起作用.

做这个的最好方式是什么?我知道它有效,但它只是在一个单独的过程中.

javascript terminal cd command-line-interface node.js

102
推荐指数
4
解决办法
9万
查看次数

如何使用项目根目录中的文件路径在 NodeJS 中导入 JavaScript 文件?(而不是相对文件路径)

问题:

\n

如何使用项目根目录中的文件路径在 NodeJS 中导入 JavaScript 文件?(而不是相对文件路径)

\n

换句话说,我的团队正在尝试从语法样式 A过渡到语法样式 B(如下所示):

\n

语法风格A

\n
const source = require(\'../../../../../../source.js\');\n
Run Code Online (Sandbox Code Playgroud)\n

语法风格 B

\n
const source = require(\'src/source.js\'); // "src" is a direct subfolder of the project root\n
Run Code Online (Sandbox Code Playgroud)\n

我已经审阅了很多关于这个主题的帖子,但没有一个能够满足我的项目的要求......

\n
\n

项目要求:

\n
    \n
  • 要求#1:没有外部包(例如 Babel.js 或 Webpack),因为磁盘空间有限。另外,我们无法使用“npm install”安装任何东西。
  • \n
  • 要求#2:JavaScript 文件应该能够使用“项目根”文件路径而不是相对文件路径导入另一个 JavaScript 文件。(这将避免诸如“../../../../../../../script.js”之类的长相对路径,这可能会变得难以管理。)
  • \n
  • 要求#3:在源代码中的任意位置右键单击导入的类应该会弹出一个上下文菜单,其中包含“转到声明”选项(这将我们直接带到导入的文件)。此外,将 JavaScript 文件移动到 IDE 中的其他文件夹应该会自动更新所有引用。我们可以使用任何IDE。
  • \n
  • 要求#4:为了采用一致的方式导入脚本,我们将使用 NodeJS 的“require”关键字进行导入(而不是 JavaScript 的“import”关键字)。
  • \n
\n
\n

设置:

\n

以下是我的设置。Package.json是由WebStorm生成的,我没有更改它。

\n …

javascript require commonjs node.js webstorm

15
推荐指数
1
解决办法
8518
查看次数

获取相对于process.cwd()的绝对路径

我有以下代码块:

#!/usr/bin/env node

const path = require('path');
const yargs = require('yargs').argv;
const ghpages = require('gh-pages');
const randomstring = require("randomstring");

const dirName = randomstring.generate({
  length: 12,
  charset: 'alphabetic'
});

console.log(__dirname, dirName, process.cwd(), yargs.directory, yargs.branch);

ghpages.publish(path.join(process.cwd(), yargs.directory), {
  branch: yargs.branch,
  clone: `../../../../tmp/${dirName}`
}, () => {
  console.log('removing');
});
Run Code Online (Sandbox Code Playgroud)

这需要该位置的绝对路径clone。

显然,我现在已经对其进行了硬编码以进行测试,但我想做的是/tmp/获取process.cwd().

所以,我想要的是,如果我运行脚本/home/otis ../../../../tmp/${dirName}会变成../../tmp/${dirName},所以我需要根据process.cwd()

有任何想法吗?

process relative-path absolute-path node.js

2
推荐指数
1
解决办法
1万
查看次数