我想从服务器读取并返回一个文件列表,并在下一个js页面(in /pages)上使用getServerSideProps传递给我的组件
如果getServerSideProps在服务器上运行,那么我可以(以某种方式)调用node。js函数来访问服务器资源?这对于制作反映服务器上文件结构的动态菜单系统非常有用。
我的第一次尝试失败了,因为Next js无法识别节点。js common js imports.是否有正确的方法来访问节点的全部集合。js资源和功能从一个组件?
/pages/home.土耳其电信公司
// requiring path and fs modules
const path = require('path');
const fs = require('fs');
// these also failed - next js cant find them
// import * as path from 'path'
// import * as fs from 'fs';
function readFiles() {
// joining path of directory
const directoryPath = path.join(__dirname, 'Documents');
// passing directoryPath and callback function
fs.readdir(directoryPath, function (err, files) {
//handling error
if (err) {
return console.log('Unable to scan directory: ' + err);
}
//listing all files using forEach
files.forEach(function (file) {
// Do whatever you want to do with the file
console.log(file);
});
});
return files;
}
export async function getServerSideProps(context) {
return {
props: {
readFiles();
}, // will be passed to the page component as props
}
}
服务器错误:
|next-next12 | https://nextjs.org/docs/messages/module-not-found
0|next-next12 | wait - compiling...
0|next-next12 | error - ./pages/home.tsx:4:11
0|next-next12 | Module not found: Can't resolve 'fs'
0|next-next12 | 2 | //requiring path and fs modules
0|next-next12 | 3 | const path = require('path');
0|next-next12 | > 4 | const fs = require('fs');
这可能吗?如果不是,我们仅限于获取getServerSideProps中的数据。访问服务器也会很棒。
1条答案
按热度按时间bq3bfh9z1#
在
getServerSideProps
里面你可以写node。js代码,就像你在服务器上写的一样。您也可以按照ES模块约定导入服务器包:
但只能在
getServerSideProps
内部使用所以你的代码应该看起来像这样: