安装node报错没有权限(node安装完node –v报错)

安装node报错没有权限(node安装完node –v报错)node 应用部署的常见方式就是把代码放服务器上 然后用命令行执行代码就可以了 比如 express 框架会自动生成一个 www 启动文件 部署时执行这段就可以了 但是这种方式的缺点也很明显 代码赤裸裸地放在服务器上 这对于软件交付来说并不是安全可靠的做法 今天就来介绍一个 node 应用的打包工具 pkg 非常方便 不过有许多需要注意的地方 相信对你有用 这里要说的 pkg 是一个 npm 包

大家好,我是讯享网,很高兴认识大家。




讯享网

node应用部署的常见方式就是把代码放服务器上,然后用命令行执行代码就可以了。比如express框架会自动生成一个www启动文件,部署时执行这段就可以了:

 

讯享网

但是这种方式的缺点也很明显,代码赤裸裸地放在服务器上,这对于软件交付来说并不是安全可靠的做法。今天就来介绍一个node应用的打包工具--pkg,非常方便,不过有许多需要注意的地方,相信对你有用!

这里要说的pkg是一个npm包,可以用来打包node应用为可执行文件。想想看,一个node应用被打包成exe文件,这样丢到服务器上,即省事又安全。来看看怎么操作吧!

安装

可以直接全局安装pkg,方便打包

讯享网

pkg入口配置

pkg执行打包的原理就是从入口文件开始,根据相关依赖顺藤摸瓜地执行打包过程,显然这个入口文件与node应用程序的自身是一样的。在配置文件package.json里,需要加上bin属性,专门指定pkg的执行入口,入口可以有多种方式:

 

pkg执行配置

pkg的用法可以看下官方文档,在命令行输入pkg -h 也可以看到相关指导说明

讯享网

pkg执行是最关键的打包动作,比如我这里用到的这行配置是这样写的:

 

结合官方文档内容,我们来看下这行代码中这些参数的意思:
1、 pkg .,意思就是它会寻找指定目录下的package.json文件,然后再寻找bin字段作为入口文件。
2、-t 用来指定打包的目标平台和Node版本,如-t node12-win-x64,node12-linux-x64,node12-macos-x64,可以同时打包3个平台的可执行程序;
3、--out-path 用来指定输出的目录地址;后面的"=dist/"就是指定的目录地址,也可以这样写"--out-path dist/",用空格替代"="

静态资源配置

讯享网

那views与public文件夹中的文件都不会被pkg自动打包,需要进行配置:

 
讯享网

外置配置文件

有时会有这种需求,我需要把配置文件放在外面,不用打包进exe中,方便部署时修改相关配置。这时就需要用到process.cwd了,具体如下:

 

需要注意的是这里最好用fs.readFileSync同步写法,而不是fs.readFile异步写法,这样保证后续代码在用到config值时不会报错,不然打包会出错。

我在打包时遇到很多问题,写文章时已经把坑填上了,按照前面的内容操作基本不会有啥问题。不过我在打包时遇到这个问题:

非常的诡异,后来在找到代码中用到env变量的地方,在www文件下有这样一段代码:

讯享网

‘babel-register’改写了 node 本身的 require,添加钩子,然后在 require 其他模块的时候,就会触发 babel 编译,即实时编译。也就是说引入 require(‘babel-register’) 的文件代码,是不会被编译的。这就导致我用pkg打包时,www文件无法被编译到exe中。于是我果断把这段代码给注释了,表示我需要此文件被编译,然后就正常了。

 

好了,文章到此结束,如果对你有用请记得点赞、分享、在看哦,谢谢鼓励! 参考资料

  1. www.jianshu.com/p/5aa149e16…
  2. juejin.cn/post/…
  3. juejin.cn/post/…
  4. www.cnblogs.com/mordom/arch…
  5. blog.csdn.net/u0/…
  6. www.cnblogs.com/mengff/p/97…

小讯
上一篇 2025-04-16 18:36
下一篇 2025-04-23 14:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/164966.html