javascript - Node - 运行全局安装的自定义模块

标签 javascript node.js npm v8

我正在尝试安装我刚刚使用 npm 编写的自定义模块。我希望能够像在我的计算机上运行任何其他命令一样运行它。

它叫做“nawk”

包.json

{
  "name": "nawk",
  "preferGlobal": true,
  "version": "0.0.1",
  "author": "My Name <xxxxxxxxxx@gmail.com>",
  "description": "a simpler version of awk",
  "bin": {
    "nawk": "./index.js"
  },
  "scripts": {
    "start": "node index"
  },
  "dependencies" : {
  },

  "license": "MIT",
  "engines": {
    "node": ">=0.6"
  }
}

索引.js

require('fs');

var readline = require('readline');

var args = process.argv;
args.shift();
args.shift();


var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  terminal: false
});

rl.on('line', function (line) {
    var message = '';

    var tokens = line.split(/\s+/);

    process.argv.forEach(function(index){
        index = +index;
        var val = null;

        if(index >= 0){
            val = tokens[+index];
        } else {
            val = tokens[tokens.length + +index - 1];
        }

        if(val){
            message += val + '\t';
        }

    });
    if(message){
        console.log(message);
    }
});

我可以很好地安装它,但是当我运行它时,第一行出现语法错误。当我从目录运行时不会发生这种情况。

我是这样安装的

> sudo npm install -g $(pwd)

然后我尝试像这样运行它。

> echo hi how are you | nawk 0 -1
/usr/local/share/npm/bin/nawk: line 1: syntax error near unexpected token `'fs''
/usr/local/share/npm/bin/nawk: line 1: `require('fs');'

最佳答案

我需要将它添加到索引文件的顶部

#!/usr/bin/env node

require('fs');
var readline = require('readline');

...

关于javascript - Node - 运行全局安装的自定义模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21765607/

相关文章:

JavaScript - DIV 的可见文本

javascript - 打开/关闭时淡出特定的 CSS/JS 弹出窗口

javascript - 如何在同一行显示两个元素?

javascript - 为什么在 javascript 中枚举继承的(如果它是继承的则有混淆)属性?

javascript - 将 Node Express 服务器上长时间运行的异步函数的进度数据发送到 React 客户端

node.js - 安装 Node/运行 npm install 的问题

javascript - Cordova iOS 平台没有Api.js

javascript - 关于Rxjs的基本问题

javascript - 无法解析模块 "events"React-Native

javascript - Date.toLocaleDateString 格式问题