Tag: 文件

有可能在Docker容器中运行shell脚本,然后运行节点app.js

我必须运行一些shell脚本,在Dockerfile中调用node app.js之前创build一些证书。 我怎么做,所以它不会退出后运行一个shell脚本,并将继续运行node app.js Web应用程序。

Docker – 覆盖链接的卷的内容

有简单的Node.js泊坞窗容器 泊坞窗,compose.yml: app: build: ./dockerfiles/app volumes: – /Users/home/work/app:/usr/app Dockerfile: FROM node:6.7-slim COPY package.json /tmp RUN cd /tmp && npm install RUN mkdir -p /usr/app WORKDIR /usr/app CMD ["node", "./src/app.js"] 我想要实现的是我有package.json和安装节点模块(npm install)的容器。 部分我复制package.json和容器内安装模块是非常直接的,但是当我想要在链接的应用程序中使用这些node_modules问题发生。 我找不到任何方法,如何将/ tmp / node_modules复制到/ usr / app / node_modules 有没有Docker的方法可以做到这一点? 如果没有,我可以告诉我的节点应用程序寻找node_modules比在根目录以外的地方?

从文件中读取并find特定的行

我需要根据某些关键字在设置文件(我无法更改格式)中获取信息。 该文件是这样的: username=myusername address=156a1355e3486f4 data=function(i){if (i!=0) return true; else return false;} 系统是<key> = <value> \n 。 值部分可以有= ,空格或其他字符,但不能换行。 密钥是唯一的(在“关键部分”中,它们可以出现在值中,但是\nkey=在每个密钥的文件中只出现一次)。 用一个shell脚本,我发现我的值是这样的: username=`grep ^username file.txt | sed "s/^username=//"` grep将会返回username=someusername ,sedreplacekey和= ,只剩下值。 在node.js中,我想访问文件中的一些数据。 例如,我想要地址和数据的值。 我怎么能在node.js中做到这一点? fs.readFile(file.txt)我不知道该怎么做。 我想我将不得不使用split ,但使用\n似乎不是最好的select,也许正则expression式可以帮助? 理想的情况是“find一个以\nkey=开头的子string,并以第一个\nkey=结尾”,然后我可以很容易地分割来find这个值。

meteorNodeJs base64转换回文件

所以在前面我有这段代码。 uploadCallback (file) { // TODO: Integrate dropbox with its SDK // TODO: Pass the link to the editor console.log('file', file) this.getBase64(file, this) } getBase64 (file, self) { const reader = new FileReader() reader.readAsDataURL(file) reader.onload = function () { console.log('reader.result', reader.result) self.sendFileToServer(reader.result) } reader.onerror = function (error) { console.log('Error: ', error) } } sendFileToServer (base64File) […]

当我们应该使用file.write(…)而不是file.createWriteStream(…)?

file.write(fd,…)和file.createWriteStream(…)什么file.createWriteStream(…) ? 例如:在下面的代码中,两个片段做同样的事情。 var http = require('http'); var fs = require('fs'); http.createServer(function(request, response) { var newFile = fs.createWriteStream('newFile.txt'); request.pipe(newFile); });, var http = require('http'); var fs = require('fs'); http.createServer(function(request, response) { var data = ""; request.on('data', function(chunk) { data += chunk.toString(); }); reuqest.on('end', function() { fs.write('newFile.txt', chunk); }); }); 我很困惑,哪一个更好? 谢谢。

将文件从受保护的path下载到浏览器

我有一个反应前端和一个nodejs / express后端。 后端可以通过受保护的路线提供文件(下载): GET /api/file/:id 当前端想要启动一个文件下载时,它使用这个代码向这个端点发送一个请求(并且Authorization头被设置了一个有效的token ): axios.get(`${apiURL}/file/${id}`) .then(file => { … }) 后端回应这个代码: router.get('/file/:id', requireAuth, = (req, res, next) => { … res.set('Content-Type', 'application/pdf'); res.download(file.path, file.filename); };); 这工作正常:下载开始,二进制数据存在于axios调用的axios .then()情况的file对象中。 我的问题: 而不是下载完整的文件,我想在文件下载开始之前将文件传递给浏览器,这样浏览器就像通常的浏览器触发下载一样处理下载,浏览器会提示下载或显示文件。 如何才能做到这一点…? 解决scheme: 感谢@FakeRainBrigand提示,我通过请求参数向路由添加了基于令牌的授权(使用护照策略): const jwtOptions = { jwtFromRequest: ExtractJwt.fromExtractors([ ExtractJwt.fromHeader('authorization'), ExtractJwt.fromUrlQueryParameter('token'), ]), secretOrKey: secretKey, }; 现在我可以将下载直接传递给浏览器来处理它: window.location.href = `${apiURL}/file/${_id}?token=${token}`;

正在复制文件

我有一个Node.js程序周期性地通过目录中的video文件循环。 如果添加或删除文件,程序将更新数据库以反映此更改。 添加文件时,使用FFmpeg生成缩略图。 当我尝试在当前正在复制到目录的文件上运行FFmpeg时遇到问题。 由于文件不完整,FFmpeg无法生成缩略图。 如果我知道一个文件被复制的时候,我可以忽略它,下一次扫描该目录的时候就会被拾取。 如何确定当前是否正在复制文件,或者如何循环目录而忽略当前正在复制的文件?

如何递增写入文本文件并刷新输出

我的Node.js程序 – 这是一个普通的命令行程序,大体上不会做任何exception的操作,没有任何系统特定的或asynchronous的或类似的东西 – 需要不时写信息到文件,然后它会被^ C中断,它需要文件的内容仍然在那里。 我已经尝试使用fs.createWriteStream但只是结束了一个0字节的文件。 (如果程序通过运行主文件的末尾来结束程序,则该文件将包含文本,但这不是我的场景。) 我已经尝试使用winston但最终没有创build文件。 (如果程序通过运行主文件的末尾来结束程序,则该文件将包含文本,但这不是我的场景。) 而fs.writeFile完美的工作,当你有所有你想要fs.writeFile的文字,但似乎并不支持一次追加一行。 推荐的方法是什么? 编辑:我试过的具体代码: var fs = require('fs') var log = fs.createWriteStream('test.log') for (var i = 0; i < 1000000; i++) { console.log(i) log.write(i + '\n') } 运行几秒钟,点击^ C,留下一个0字节的文件。

将持久性数据存储在docker容器目录中

我想用Docker手动cachingnode_modules ,如下所示: COPY . . # copy everything (node_modules is gitignored though) COPY package.json /tmp/test-deps RUN (cd /tmp/test-deps && npm install –no-optional > /dev/null 2>&1) RUN ln -s /tmp/test-deps/node_modules /root/cdt-tests/node_modules 这是有效的,但是在我看来,每次构build容器时都会重新创build/tmp/test-deps/node_modules 。 如何创build一个持久目录,以便我不必每次都重新安装node_modules? 可笑地很难find有关如何cachingDocker任何目录中的任何信息。

如何在不保存本地的情况下将base64数据转换为可读的图像stream

我正在使用Node.js处理Microsoft Bot Framework(在Azure上托pipe),本地保存文件不是一个选项。 我有base64格式的图像数据,我需要将这些数据转换成一个可读的图像文件stream,我可以使用它们的Blob存储API(需要一个stream)将其传输到Azure中。 var base64ImageData; //my base64 image //Create myStream here //Then send to Azure blobService.createBlockBlobFromStream('mycontainer', nameForBlob, myStream, fileSize, function (error, result, response){ if(!error) console.log(response); else console.log(error) }); 任何帮助,将不胜感激。 我无法弄清楚如何解码base64,并从中创build一个stream,而不会将jpg保存到我的磁盘上。