V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ltaoo1o  ›  全部回复第 3 页 / 共 3 页
回复总数  59
1  2  3  
@Lockroach 你可以像我这样初始化一个项目,复现你的问题,更直观

https://codesandbox.io/p/devbox/xhnjzn

我用你的配置,没出现你说的问题
@flowercoder 前提是不用 ssh 登录服务器,那像你说的提供接口是最简单的方式了,其他考虑的无非就是安全、稳定
这个问题本身非常简单,在服务器跑一个后端服务提供类似 /api/upload 接口,接口逻辑就是拿到上传的压缩包解压并覆盖指定文件夹,你用 AI 写都行。

接口可以加个验证机制比如请求头必须包含 xxx 字符串
你需要的是一套前端部署方案。

除了前面说的安全问题,还存在一个致命问题。
1 、替换 html + 静态资源
当用户正在访问你的网站,你替换成功了,用户切换到其他页面或使用其他功能,懒加载的 js 不存在(被替换了),页面就用不了了。
2 、只替换静态资源(同名文件)
现在的打包工具默认都是 hash 应该不会出现这种情况除非特殊配置,nginx 是有缓存所以替换是不生效的

部署方案都是增量,旧资源不删除的,还可以支持回滚。
@Lockroach 要看你的打包配置,我用 rollup 试了,默认会打成一个文件。额外指定 external core-js ,才会变成你说的包含 require 的代码
babel 是语法转换工具,core-js 是工具库。打包工具应该是 webpack 、rollup 、esbuild 或者其他的,我看应该是打包工具哪里需要配置
@renmu123 哦我理解了你的意思,是把 运行 lobe-chat 的命令写成 .bat 脚本对吗

```
cd /lobe-chat
npm run start
```

是我之前没想到的,确实可以
@renmu123 写 bat 脚本没问题,但是脚本内容怎么写呢 😂
@needpp 细说,是类似照片美化那种吗,用户自己拍了一些照片,组合起来美化美化,好发朋友圈?
@python30 你的问题其实是,如何在请求路径匹配 /?target 时,渲染指定 tiaozhuan.html ?
刚刚看了下知乎,点击的链接就是 https://link.zhihu.com/?target=https%3A//www.sxhm.com/online.html 这种格式了。
用 django 就是解析用户提交的内容,如果存在超链接,就替换成你自己的网站地址+原始超链接。
贴不了图片,这个是运行时的报错

PS C:\Users\xxx\Documents\temp\my-next-app\.next\standalone> .\server.exe
✅ Granted all env access.
error: Uncaught NotSupported: chdir 'C:\Users\xxx\AppData\Local\Temp\deno-compile-server.exe\standalone': chdir 'C:\Users\xxx\AppData\Local\Temp\deno-compile-server.exe\standalone'
at Process.chdir (ext:deno_fs/30_fs.js:155:3)
at Object.<anonymous> (file:///C:/Users/xxx/AppData/Local/Temp/deno-compile-server.exe/standalone/server.cjs:6:9)
at Object.<anonymous> (file:///C:/Users/xxx/AppData/Local/Temp/deno-compile-server.exe/standalone/server.cjs:39:4)
at Module._compile (node:module:748:34)
at Object.Module._extensions..js (node:module:767:10)
at Module.load (node:module:665:32)
at Function.Module._load (node:module:537:12)
at Object.loadCjsModule (ext:deno_node/02_init.js:64:22)
at loadCjsModule ([ext:ext\node\lib.rs:783:29]:2:32)
at [ext:ext\node\lib.rs:783:29]:3:7
https://github.com/nextjs/deploy-deno 我参考这个项目,能用 deno server.cjs 成功运行打包后的产物,而且也能打包出一个 120MB 的 .exe 文件,但是运行 .exe 文件是报错的。

这种问题没法排查,网上也搜不到类似的。

![Snipaste_2024-11-24_00-12-38.png]( https://image.988589.xyz/api/cfile/AgACAgUAAyEGAASC5r41AAMnZ0H-8DKOcwhIRYEanezZE8FI6AYAApe9MRulbhBWgQNAYq5BdnkBAAMCAAN5AAM2BA)
@li1218040201 最后的回复提到 next build and standalone 我之前也试过,Windows 环境下有问题,也一直解决不了
@monmon 试了下不行,翻了 ncc issues 别人也遇到了同样的问题,而且解决不了 https://github.com/vercel/ncc/issues/1138
19 天前
回复了 MaxPool 创建的主题 前端开发 next.js 文件上传问题,求解
贴一下代码和控制台截图,这样提问什么信息都没有,想帮也帮不了。
感谢,也是一个方案,我去试试。
https://github.com/tiny-craft/tiny-rdm
这个项目用的 wails ,打包后只有 10MB 。

我自己用过的
1 、tauri 打包后有 12MB 左右
2 、flutter 打包后有 24MB 左右

逻辑都非常简单,可以看作是「最小体积」
2022-12-05 22:39:49 +08:00
回复了 SeleiXi 创建的主题 Node.js 新人求教如何在终端获得输入?
不知道你是想获取哪种,我理解有两种,一种是在终端执行一个命令后,获取到这个命令的输入;第二种是在终端进行交互式的输入,可以实时获取到输入。
直接给两种实现的代码吧

```typescript
// 1 、获取执行命令时的参数
const commandSegments = process.argv;
console.log(commandSegments);

/**
* @example
* node index.js run --help
* commandSegments === ['/usr/local/bin/node', '/Users/litao/Documents/temp/cmd/index.js', 'run', '--help'];
*/

// 2 、交互式获取输入的参数
const { createInterface } = require("readline");
const { stdin, stdout } = process;
console.log("Please input something:");
const rl = createInterface({
input: stdin,
output: stdout,
});
rl.on("line", async (input) => {
console.log("your input is:", input);
});

/**
* @example
* node index.js
* > hello world
* > your input is: hello world
*/

```

首先是运行这个脚本,我用 `node index.js run --help`,首先会打印

```bash
[
'/usr/local/bin/node',
'/Users/litao/Documents/temp/cmd/index.js',
'run',
'--help'
]
```

这个就是 `process.argv` 了,就是上面说的第一种;然后命令不会退出,这时可以继续输入,比如 `aaa`,终端会响应

```bash
your input is: aaa
```
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5551 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 02:40 · PVG 10:40 · LAX 18:40 · JFK 21:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.