相关疑难解决方法(0)

"/ usr/bin/env node"在节点文件的开头究竟做了什么?

#!/usr/bin/env node在一些例子的开头看到了这一行,nodejs我用google搜索没有找到任何可以回答该行原因的话题.

单词的性质使搜索变得不那么容易.

我最近读了一些javascriptnodejs书,我不记得在其中任何一个看过它.

如果你想要一个例子,你可以看到RabbitMQ官方教程,他们几乎在所有的例子中都有它,这里有一个:

#!/usr/bin/env node

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://localhost', function(err, conn) {
  conn.createChannel(function(err, ch) {
    var ex = 'logs';
    var msg = process.argv.slice(2).join(' ') || 'Hello World!';

    ch.assertExchange(ex, 'fanout', {durable: false});
    ch.publish(ex, '', new Buffer(msg));
    console.log(" [x] Sent %s", msg);
  });

  setTimeout(function() { conn.close(); process.exit(0) }, 500);
});
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这条线的含义是什么?

如果我放入或删除此行有什么区别?在什么情况下我需要它?

shebang node.js

85
推荐指数
3
解决办法
4万
查看次数

节点js中的node_modules/.bin/package.cmd文件

我是节点 js 的新手。我正在尝试构建一个 npm 模块,并将 /node_modules/.bin 文件夹中的 cmd 文件与本地包的名称混淆。

我安装了多个包作为依赖,发现cmd文件不一样。

玉石.cmd

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\..\jade\bin\jade" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0\..\jade\bin\jade" %*
)
Run Code Online (Sandbox Code Playgroud)

mocha-casperjs.cmd

@IF EXIST "%~dp0\/bin/sh.exe" (
  "%~dp0\/bin/sh.exe"  "%~dp0\..\mocha-casperjs\bin\mocha-casperjs" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  /bin/sh  "%~dp0\..\mocha-casperjs\bin\mocha-casperjs" %*
)
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果它是由 NPM 自动生成的,为什么 npm 会为 2 个不同的包创建 2 个不同的文件。是用户创建并告诉 NPM 的东西吗?

node.js npm npm-install

3
推荐指数
2
解决办法
2119
查看次数

标签 统计

node.js ×2

npm ×1

npm-install ×1

shebang ×1