【问题标题】:Run node_module package command in js file在 js 文件中运行 node_module 打包命令
【发布时间】:2020-06-04 18:09:05
【问题描述】:

在 package.json 文件中,我在 scripts 对象中有这样一行:

"scripts": {
     // some commands..
     "runpackage": "someNpmPackage -args"
}

这个someNpmPackage 是我的node_modules 中的一个包,但不在命令行中。 (即我可以在终端中运行命令)。

这很好用。但是,我希望能够在脚本中做到:"runPackage": "node scripts/runPackage.js"

我尝试类似的东西

var exec = require('child_process').exec;
exec('someNpmPackage -args', function (err) {
    if (err) {
      console.log(err.message);
      process.exit();
    }
    console.log('success');
});

但我得到的只是/bin/sh: someNpmPackage: command not found

如何让exec 函数知道这个包?

【问题讨论】:

    标签: node.js node-modules


    【解决方案1】:

    为什么不在系统中全局安装someNpmPackage

    【讨论】:

    • 这意味着在命令行中没有该软件包的服务器上运行。
    • 您可以在命令行中执行npm install -g someNpmPackage 以全局安装该软件包并能够通过命令行访问它。
    • 但我不想全局安装!我没有那个权限。
    【解决方案2】:

    在根项目文件夹中尝试,在命令行上:./node_module/.bin/someNpmPackage。如果此命令有效,那么它应该与 exec 一起使用。

    【讨论】:

    • 该命令在./node_modules/.bin 中有效,但在脚本中无效。它说找不到命令。
    • 你真的在exec函数中写./node_module/.bin/someNpmPackage吗?或者只是someNpmPackage
    • 只是someNpmPackage。在我使用exec(path.resolve(__dirname, '../node_modules/.bin') + '/someNpmPackage 之后它确实有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多