gpt4 book ai didi

node.js - 在 NPM 启动时下载模块

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:25 25 4
gpt4 key购买 nike

我想知道是否有一种简单的方法可以在其他代码运行之前下载文件。我需要首先从我的服务器下载 file.js,因为我需要在不同位置的应用程序中使用它。我知道我可以做类似的事情。

let file = fs.createWriteStream(path.join(__dirname, 'file.js'));
let request = http.get("http://expample.com/file.js",
function(response) {
response.pipe(file);
});

但是如果我假设正确的话,文件是异步写入的。因此,当我需要该文件时,我只有空对象或错误。

那么首先在 npm start 上同步下载该文件的最佳方法是什么?

最佳答案

您可以使用 npm script pre hooks 获得这样的结果。

假设你的启动脚本名为“start”,在你的package.json中添加名为“prestart”的脚本,您要在其中运行执行文件下载的脚本。当你调用npm run start

时,in将自动运行

例如:

package.json:

{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"prestart": "node pre-start.js"
},
"author": "",
"license": "ISC"
}

index.js:

const value = require('./new-file.json');
console.log(value);

预启动.js:

const fs = require('fs');

setTimeout(function() {
const value = {
"one" : 1,
"two" : 2
};

fs.writeFileSync('new-file.json', JSON.stringify(value));
}, 1000)

以下是包含更详细信息的文章链接: http://www.marcusoft.net/2015/08/pre-and-post-hooks-for-npm-scripting.html

另一种方法是在写入文件后运行其他代码:

let file = fs.createWriteStream(path.join(__dirname, 'file.js'));
let request = http.get("http://expample.com/file.js",
function(response) {
response.pipe(file);
file.on('finish',function(){
// run your code here
}
});

关于node.js - 在 NPM 启动时下载模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com