Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 发布严格要求最低节点版本的npm包_Node.js_Npm - Fatal编程技术网

Node.js 发布严格要求最低节点版本的npm包

Node.js 发布严格要求最低节点版本的npm包,node.js,npm,Node.js,Npm,如果我写一个包,我肯定需要Node4或更高版本,我不希望它可以用旧版本安装 我知道package.json引擎字段,但这只是建议(只会引起警告)。EngineStrict已被弃用 那我该怎么办 一个想法是使用预安装脚本检查节点版本和错误(如果不够高),从而阻止安装继续进行。这样做有什么问题吗?还有更好的方法吗?如果您想获得良好的体验,请将您的CLI入口点设置为标准ES5和CommonJS,检测节点版本(process.version),并打印详细且有用的消息,然后退出非零。请记住,您的模块可能安

如果我写一个包,我肯定需要Node4或更高版本,我不希望它可以用旧版本安装

我知道package.json引擎字段,但这只是建议(只会引起警告)。EngineStrict已被弃用

那我该怎么办


一个想法是使用预安装脚本检查节点版本和错误(如果不够高),从而阻止安装继续进行。这样做有什么问题吗?还有更好的方法吗?

如果您想获得良好的体验,请将您的CLI入口点设置为标准ES5和CommonJS,检测节点版本(
process.version
),并打印详细且有用的消息,然后退出非零。请记住,您的模块可能安装了某个节点版本,然后用户使用nvm或其路径或其他任何工具进行修改,然后在不同版本下运行您的代码。因此,我认为在运行时很好地失败是最重要的事情。如果愿意,您也可以选择在安装时失败。

为什么需要执行任何操作?使用它的人会看到Node v4是预期的,因此如果它不起作用,他们不应该感到惊讶。@FelixKling很容易忽略有关预期节点版本的一点警告,特别是在各种程序包的安装后脚本发出的一系列噪音中。我只会在自述文件中添加一条注释。如果有任何区别,这适用于CLI工具,而不是可重用模块。我不希望人们安装我的CLI工具,如果这意味着,当他们第一次尝试使用它时,他们会在我的代码中遇到一个关于“错误语法”的令人困惑的错误。阻止安装并打印一条有用的消息,解释他们需要升级节点并重试,这对我来说是一个更好的用户体验。好的,谢谢。不过,还有一个问题是,如果我的CLI依赖于节点sass之类的东西,则根据节点版本的不同,实际构建的方式也不同。这意味着用户无论如何都必须在升级节点后重新安装CLI。因此,在这种情况下,早期预装失败似乎是最好的。不过,我也可以按照您的建议进行运行时检查。我认为节点sass问题应该由
npm rebuild
处理,这是处理在节点版本X上安装并尝试在节点版本Y上运行的正式方法。