我正在创建一个应用程序来为客户端项目生成组件结构。该应用程序需要从命令行运行,所以我已经使它成为一个可以全局安装的已发布的npm应用程序,但是当我运行应用程序时,它忽略了我正在尝试运行它的目录,而只是查找在它自己的node_modules目录中(我在nvm和定期安装的节点下试过这个)
我正在尝试使用以下代码设置项目根目录:var projectRoot = path.dirname(require.main.filename)
我也尝试使用__dirname
,但也无效。
我正在尝试解决的具体问题(虽然这只是少数中的第一个,所有这些似乎都是由应用程序查找错误的地方造成的)是应用程序需要先查找配置文件它会运行。我在下面列出了示例代码:
fs.stat(path.join(projectRoot, '/clarity.yml'), function (err, stat) {
if (err === null) {
console.log(chalk.green('clarity.yml detected!\nLoading your preferences...\n\n'))
config = yml.safeLoad(fs.readFileSync(path.join(projectRoot, '/clarity.yml'), 'utf8'))
questionTime()
} else if (err.code === 'ENOENT') {
console.error(chalk.red('clarity.yml not found. Please add one to the root of your project. A template can be found at https://git.io/v5Tt2 \nProcess aborted with errors'))
process.exit(1)
}
})
最烦人的部分是,当我大约一年前制作它时,它没有问题,但是,我运行节点v4.4.5然后我现在使用的是v8.0.0(我也在v6上尝试过) .0.0和v7.0.0,结果相同)。