我正在尝试通过从实例化节点的主目录中的templates
文件夹中复制它们来创建将用于创建项目结构(包含所有必需的文件夹和文件)的NodeJS CLI处理。但是看来我在获取正确路径时遇到了一些问题。我有此功能,该功能应采用当前目录路径,用户将在此位置从终端运行命令,然后在该位置复制文件:
export async function createProject(options) {
options = {
...options,
targetDirectory: options.targetDirectory || process.cwd() // CWD -> current working directory
}
// ISSUE is probably around here
const currentFileUrl = import.meta.url;
const templateDir = path.resolve(
new URL(currentFileUrl).pathname,
'../../templates',
options.template.toLowerCase()
);
options.templateDirectory = templateDir;
console.log(templateDir)
// ISSUE is probably around here
try {
await access(templateDir, fs.constants.R_OK);
} catch (err) {
console.log(`%s ${err}`, chalk.bold.red("ERROR"));
console.log('%s Invalid Template', chalk.bold.red("ERROR"))
process.exit(1)
}
console.log("Copy project files...")
await copyTemplateFiles(options);
console.log("%s Project ready", chalk.bold.green("DONE"))
return true;
}
我已经指出了我认为的原因,因为当我仅控制台记录templateDir
值时,它将返回以下路径:
C:\E:\Web%20development\Projects\creator-cli\templates\javascript
在路径前加上两个分区,这可能导致其失败。这是我得到的错误:
Error: ENOENT: no such file or directory, access 'C:\E:\Web%20development\Projects\creator-cli\templates\javascript'
我不知道为什么用C:\E:\
来做。任何帮助将不胜感激:)