Node.js产生Blender命令行?

时间:2016-01-05 00:52:42

标签: node.js command-line blender spawn

我需要通过spawn进行blender命令行访问,但仍然遇到ENOENT错误,很难找出丢失的内容。在示例应用程序中传递的命令行在终端中工作。

以下是有关环境和我正在使用的示例脚本的一些详细信息。

环境(OSX El Capitan)

  1. 已安装的Blender 2.76b:

    brew install Caskroom/cask/blender

  2. 然后将alias添加到bash_profile以进行终端访问:

    alias blender="/Applications/blender/Blender.app/Contents/MacOS/blender"

  3. 测试代码

    #!/usr/bin/env node
    var child_process = require('child_process');
    var arguments = [
            '-b',
            'recipe.blend',
            '-o', 'test-#',
            '-f', 0
    ];
    console.log("values: ", arguments);
    var child = child_process.spawn('blender', arguments);
    
    child.stdout.on('data', function(data) {
        console.log('data out: ', data.toString());
    });
    child.stderr.on('data', function(data) {
        console.error('error out: ',data);
    });
    child.on('close', function(code) {
        console.log('closing code: ' + code);
    });
    
    // Raw command-line for terminal. (PASS)
    // blender -b recipe.blend -o test-# -f 0
    

1 个答案:

答案 0 :(得分:1)

尝试更改child_process.spawn('blender',arguments); line to child_process.spawn('/ Applications / blender / Blender.app / Contents / MacOS / blender',arguments);. NodeJS不会使用你的bash别名,所以除非blender可执行文件在其PATH中,否则它将无法找到可执行文件并将抛出一个ENOENT。

另一个选项是调整Node的PATH以包含blender可执行文件的路径。您还可以将完整路径作为环境变量传递给blender可执行文件。

干杯!