Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在NextJs中访问服务器端代码中的静态资源?_Javascript_Node.js_Typescript_Nextjs - Fatal编程技术网

Javascript 在NextJs中访问服务器端代码中的静态资源?

Javascript 在NextJs中访问服务器端代码中的静态资源?,javascript,node.js,typescript,nextjs,Javascript,Node.js,Typescript,Nextjs,我正在使用NextJS的静态呈现功能来生成我的站点的静态版本,因此我想确保在页面的第一次呈现时提供正确呈现所需的所有数据 我有许多博客文章,我将其存储为/static中的.md文件,并希望在以下页面中访问它们: import * as fs from "fs"; ... export default class extends React.Component<IProps, any> { static async getInitialProps (props: IServer

我正在使用NextJS的静态呈现功能来生成我的站点的静态版本,因此我想确保在页面的第一次呈现时提供正确呈现所需的所有数据

我有许多博客文章,我将其存储为/static中的.md文件,并希望在以下页面中访问它们:

import * as fs from "fs";
...

export default class extends React.Component<IProps, any> {

  static async getInitialProps (props: IServerProps) {
    const post = (await getDb()).posts.find(p => p.id == props.query.id);
    const markdown = fs.readFileSync(`/static/posts/${post.markdownFileName}`);
    return { post, markdown }
  }
...
import*作为fs从“fs”导入;
...
导出默认类扩展React.Component{
静态异步getInitialProps(props:IServerProps){
const post=(wait getDb()).posts.find(p=>p.id==props.query.id);
const markdown=fs.readFileSync(`/static/posts/${post.markdownFileName}`);
返回{post,markdown}
}
...
但如果尝试运行上述操作,则会出现以下错误:

未找到此依赖项:*fs


因此,我不确定在服务器上如何访问这些静态资源。

不幸的是,Next.js不允许使用网页包加载程序处理服务器上的不同文件类型(尽管它们用于构建客户端包),但也可以使用Babel插件。这里可以找到一个用于标记内容的插件:

.babelrc
中配置后:

{
  "plugins": ["markdown"]
}
可以使用
markdown.require()
拉入
.md
内容:

const html = markdown.require('./foo.md')

链接中描述了更多选项!

而不是使用
fs
,您是否考虑过类似
降价加载器
,然后导入/需要
.md
文件?Next.js允许对网页包配置进行一些自定义:@matthland很遗憾,根据文档,我无法使用网页包服务器端的ADER,我无法使用markdown loader:(哪个文档告诉你了?你是对的,我不知道我怎么会错过这个!它确实说可以使用babel插件,还有一个用于MD内容:@Matthholland是的,我看到我们可以使用babel,但我不确定要使用哪一个插件,这个插件下载不多,但我想没关系吧?很好,它有一个不转换的选项。)谢谢,你应该把它变成一个答案,这样我就可以接受了。