从另一个文件夹执行Node脚本时的相对路径错误

cbdeveloper

我有此脚本,需要node通过CLI运行

该脚本的文件相对文件引用为:

files: '../functions/index.js',

文件结构是这样的:

> buildScripts
    myScript.js
> functions
    index.js

当我在buildScripts文件夹中(在终端上)时,一切正常:

>> C:\MyProjectRoot\buildScripts> node myScript.js

但是当我进入MyProjectRoot文件夹时,它会抛出:

>> C:\MyProjectRoot> node buildScripts/myScript.js

发生错误:错误:没有文件符合以下格式:../functions/index.js


如何从myProject根文件夹运行此文件并仍然获得正确的路径?


我不知道它是否取决于我正在运行的脚本/软件包,因此这是该脚本的完整源代码:

myScript.js

我正在使用该replace-in-file软件包来更新一些导入。在某些时候这将是一个postBuild脚本。

const escapeStringRegexp = require('escape-string-regexp');
const fromPath = './src';
const fromPathRegExp = new RegExp(escapeStringRegexp(fromPath),'g');

const replace = require('replace-in-file');
const options = {
  files: '../functions/index.js',  // <----------------------------------
  from: fromPathRegExp,
  to: './distFunctions',
};

replace(options)
  .then(results => {
    console.log('Replacement results:', results);
  })
  .catch(error => {
    console.error('Error occurred:', error);
  })
;
cbdeveloper

以下问题(下面的链接)有很大帮助(尽管不是重复的):

node.js中的__dirname和./有什么区别?

这是脚本的工作版本。无论您从何处执行它,它都有效。

const path = require('path');
const escapeStringRegexp = require('escape-string-regexp');
const fromPath = './src';
const fromPathRegExp = new RegExp(escapeStringRegexp(fromPath),'g');

const replace = require('replace-in-file');
const options = {
  files: '../functions/index.js',
  from: fromPathRegExp,
  to: './distFunctions',
};

console.log('This is the __dirname: ' + __dirname);
console.log('This is the __filename: ' + __filename);
console.log('This is process.cwd(): ' + process.cwd());
console.log('This is the ../functions/index.js: ' + path.resolve('../functions/index.js'));


process.chdir(__dirname);
console.log('CHANGED cwd WITH process.chdir');

console.log('This is the __dirname: ' + __dirname);
console.log('This is the __filename: ' + __filename);
console.log('This is process.cwd(): ' + process.cwd());
console.log('This is the ../functions/index.js: ' + path.resolve('../functions/index.js'));

replace(options)
  .then(results => {
    console.log('Replacement results:', results);
  })
  .catch(error => {
    console.error('Error occurred:', error);
  })
;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

循环VBA宏以打开文件夹中的文件,导入行,然后使用相对路径移动到另一个文件夹

使用相对路径从另一个 py 脚本运行 py 脚本

具有来自另一个目录的相对路径的运行脚本

使用相对路径以建立到另一个文件的链接时出现问题

使用路径字符串从另一个文件中查找文件的相对路径

如何使用该位置的相对路径在一个位置中创建多个文件夹?

无法使用相对路径重定向到另一个页面

如何从另一个目录导入具有相对路径的 Python 模块?

在Java中查找从一个URL到另一个URL的相对路径

在 node.js 中使用相对路径(以前的文件夹)访问文件

python中的相对路径几个文件夹

使用Webpack解决从node_modules到Dist文件夹的相对路径

如何在另一个文件夹中执行命令,而不重复文件夹路径?

相对路径错误取决于终端的当前文件夹

相对于另一个文件夹中包含的.iss文件解析文件路径

通过相对路径中的守护程序systemd启动一个dotnet核心可执行文件

将完整路径传递给Docker映像时,“没有此类文件或目录”,但与相同文件夹的相对路径一起使用

如何从一个相对路径在运行时引用文件,而不是编译时

从另一个PHP文件运行一个php文件,就像我直接从浏览器中打开它一样(相对路径问题)

VBA将一个对象与另一个对象用字符串修剪(与FSO.Getfolder有关)基本上以文件的相对路径结尾

如何连接相对路径或生成嵌套文件夹中包含的唯一标识符 svg?

使用UNIX Shell脚本移动到另一个文件夹时更改文件名

如何在不使用相对路径的情况下从另一个规则访问bazel规则的输出?

另一个用户如何使用他自己的主目录中的相对路径访问您的主目录?

如何使用Java获取文件到文件夹的相对路径

如何获取包含.m文件的文件夹的相对路径

从不同的子文件夹中查找文本文件的相对路径

如何使用os python获取另一个文件夹中文件的路径

Angular 5修复Assets /文件夹的相对路径