全局安装时,我的节点应用程序将在全局node_modules文件夹中查找

时间:2017-10-25 14:48:23

标签: node.js npm fs

我正在创建一个应用程序来为客户端项目生成组件结构。该应用程序需要从命令行运行,所以我已经使它成为一个可以全局安装的已发布的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,结果相同)。

0 个答案:

没有答案