我#!/usr/bin/env node在一些例子的开头看到了这一行,nodejs我用google搜索没有找到任何可以回答该行原因的话题.
单词的性质使搜索变得不那么容易.
我最近读了一些javascript和nodejs书,我不记得在其中任何一个看过它.
如果你想要一个例子,你可以看到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)
有人可以解释一下这条线的含义是什么?
如果我放入或删除此行有什么区别?在什么情况下我需要它?
我在 c# 中创建了一个简单的 PowerShell 模块,它实现了一些 cmdlet,我希望能够在导入模块时运行代码。
从在 google 和命名空间中环顾四周,似乎没有这样做的正确方法。
到目前为止,我提出的解决方法是创建一个 psm1 或 ps1 文件,该文件在加载模块时运行并执行启动操作(宁愿不使用它,因为脚本在某些将运行的环境中被阻止)。
其他选项是我已经能够通过创建一个 CmdletProvider 来做到这一点,但它在使用 new-psdrive 时会在提供程序列表中创建一个垃圾条目。
[CmdletProvider("junkprovider", ProviderCapabilities.None)]
public class Startup : CmdletProvider
{
Public Startup()
{
// Startup code here
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法正确地做到这一点,或者我将不得不使用黑客?