错误相对路径全局包nodejs
error relative path global package nodejs
我创建了一个有多种选择的包,根据我的选择,我 运行 一个 bash 脚本 .sh 和来自节点的 execFile 它在本地与路径 "./utils/myScript .sh
但是当我使用 npm pack 创建包并全局安装时,它无法在 utils 目录中找到脚本文件。
另一方面,如果我把路径 /usr/local/lib/node_modules/choicescript/utils/myScript.sh
有效
如何告诉它使用相对路径而不是绝对路径
我在启动脚本时遇到另一个小问题 我有我的日志,但我没有看到脚本的 return 显示,就好像我直接用 ./myScript.sh[ 启动了这个脚本一样=11=]
const program = require("commander");
const chalk = require("chalk");
const inquirer = require("inquirer");
const { execFile } = require("child_process");
let opts = {
shell: "/bin/bash",
};
function devFunc() {
execFile("./utils/myScrypt.sh", opts, (error, stdout, stderr) => {
log(stdout);
log(stderr);
if (error !== null) {
log(`exec error: ${error}`);
}
});
log(chalk.green.bold("3[32;5mDATABASE DEV RUN - host: 127.0.0.1 - port: 33063[0m - ") + chalk.blue.bold(`CTRL+C pour quitter`));
}
const { dev, preprod, prod } = program.opts();
if (dev) {
devFunc();
} else if (preprod) {
preprodFunc();
} else if (prod) {
prodFunc();
} else {
inquirer
.prompt([
{
type: "rawlist",
name: "Database_gcp",
message: "Database choice",
choices: ["dev", "preprod", "prod", "exit"],
},
])
.then((gcp) => {
if (gcp.Database_gcp === "dev") {
devFunc();
}
if (gcp.Database_gcp === "preprod") {
preprodFunc();
}
if (gcp.Database_gcp === "prod") {
prodFunc();
}
if (gcp.Database_gcp === "exit") {
log(chalk.blue("EXIT"));
}
});
}
而不是做一个相对的 import/require - 你可以使用 __dirname
常量并使用“join”以获得更好的兼容性。 __dirname
生成当前模块的完整路径目录。
//...
const { join } = require('path');
//...
execFile(join(__dirname, 'utils', 'myScrypt.sh'), opts, (error, stdout, // ...
我创建了一个有多种选择的包,根据我的选择,我 运行 一个 bash 脚本 .sh 和来自节点的 execFile 它在本地与路径 "./utils/myScript .sh
但是当我使用 npm pack 创建包并全局安装时,它无法在 utils 目录中找到脚本文件。 另一方面,如果我把路径 /usr/local/lib/node_modules/choicescript/utils/myScript.sh 有效
如何告诉它使用相对路径而不是绝对路径
我在启动脚本时遇到另一个小问题 我有我的日志,但我没有看到脚本的 return 显示,就好像我直接用 ./myScript.sh[ 启动了这个脚本一样=11=]
const program = require("commander");
const chalk = require("chalk");
const inquirer = require("inquirer");
const { execFile } = require("child_process");
let opts = {
shell: "/bin/bash",
};
function devFunc() {
execFile("./utils/myScrypt.sh", opts, (error, stdout, stderr) => {
log(stdout);
log(stderr);
if (error !== null) {
log(`exec error: ${error}`);
}
});
log(chalk.green.bold("3[32;5mDATABASE DEV RUN - host: 127.0.0.1 - port: 33063[0m - ") + chalk.blue.bold(`CTRL+C pour quitter`));
}
const { dev, preprod, prod } = program.opts();
if (dev) {
devFunc();
} else if (preprod) {
preprodFunc();
} else if (prod) {
prodFunc();
} else {
inquirer
.prompt([
{
type: "rawlist",
name: "Database_gcp",
message: "Database choice",
choices: ["dev", "preprod", "prod", "exit"],
},
])
.then((gcp) => {
if (gcp.Database_gcp === "dev") {
devFunc();
}
if (gcp.Database_gcp === "preprod") {
preprodFunc();
}
if (gcp.Database_gcp === "prod") {
prodFunc();
}
if (gcp.Database_gcp === "exit") {
log(chalk.blue("EXIT"));
}
});
}
而不是做一个相对的 import/require - 你可以使用 __dirname
常量并使用“join”以获得更好的兼容性。 __dirname
生成当前模块的完整路径目录。
//...
const { join } = require('path');
//...
execFile(join(__dirname, 'utils', 'myScrypt.sh'), opts, (error, stdout, // ...