Node.js 我可以为Nuxt页面强制SSR吗?
在Nuxt应用程序中,我需要呈现一个页面,其中包含从100MB.jsonl文件获取的谷歌地图上显示的大量数据。我在asyncData()中使用fs.createReadStream解析数据并将其提供给Vue组件。由于fs是仅服务器端的模块,这意味着当它尝试在客户端呈现该页面时,我的应用程序会出错 我希望它这样这个特定的页面将专门与SSR呈现,这样我就可以在Vue组件中使用fs 我曾想过使用定制的Express中间件来处理数据,但这仍然会导致向客户端下载几十MB的数据,这是不可接受的。在我的示例中,您可以看到我如何使用Axios请求它Node.js 我可以为Nuxt页面强制SSR吗?,node.js,vue.js,server-side-rendering,nuxt.js,Node.js,Vue.js,Server Side Rendering,Nuxt.js,在Nuxt应用程序中,我需要呈现一个页面,其中包含从100MB.jsonl文件获取的谷歌地图上显示的大量数据。我在asyncData()中使用fs.createReadStream解析数据并将其提供给Vue组件。由于fs是仅服务器端的模块,这意味着当它尝试在客户端呈现该页面时,我的应用程序会出错 我希望它这样这个特定的页面将专门与SSR呈现,这样我就可以在Vue组件中使用fs 我曾想过使用定制的Express中间件来处理数据,但这仍然会导致向客户端下载几十MB的数据,这是不可接受的。在我的示例中
async asyncData( {$axios} ) {
const fs = require('fs');
if (process.server) {
console.log("Server");
async function readData() {
const DelimiterStream = require('delimiter-stream');
const StringDecoder = require('string_decoder').StringDecoder;
const decoder = new StringDecoder('utf8');
let linestream = new DelimiterStream();
let input = fs.createReadStream('/Users/Chibi/WebstormProjects/OPI/OPIExamen/static/stream.jsonl');
return new Promise((resolve, reject) => {
console.log("LETS GO");
let data = [];
linestream.on('data', (chunk) => {
let parsed = JSON.parse(chunk);
if (parsed.coordinates)
data.push({
coordinates: parsed.coordinates.coordinates,
country: parsed.place && parsed.place.country_code
});
});
linestream.on('end', () => {
return resolve(data);
});
input.pipe(linestream);
});
}
const items = await readData();
return {items};
} else {
console.log("CLIENT");
const items = this.$axios.$get('http://localhost:3000/api/stream');
return {items };
}
}
即使渲染正确,NUXT也会向我显示一个错误叠加,抱怨问题
您是否“需要”了
fs
模块?是的,请看第二行代码。