在NextJs中访问服务器端代码中的静态资源?
我使用NextJS的静态渲染function来生成我的网站的静态版本,因此我想确保在页面的第一次呈现所有需要正确呈现的数据提供。
我有一些博客文章,我已经存储为.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 } } ...
但是,如果尝试运行上面的,我得到以下错误:
This dependency was not found: * fs
所以我不知道我应该如何去访问这些静态资源,而在服务器上..
不幸的是,Next.js不允许使用webpack加载器来处理服务器上的不同文件types(虽然它们被用来构build客户端包),但是可以使用Babel插件。 Markdown内容的一个插件可以在这里find: https : //www.npmjs.com/package/babel-plugin-markdown
在.babelrc
configuration之后:
{ "plugins": ["markdown"] }
可以使用markdown.require()
来引入.md
内容:
const html = markdown.require('./foo.md')
更多选项在链接中描述!
- 什么是“js”方法在gulp上(对于使用gulp-typescript的Typescript项目)
- 如何在Typescript中声明ES6模块的types?
- 我怎样才能得到Visual Studio Typescript 1.7 intellisense与nodejs库(angular2,rxjs)?
- Angular 2实时刷新应用程序
- TSC错误TS1110 node.d.ts Node.js v6.x
- 导出variables“路由器”具有或正在使用来自外部模块的名称“路由器”,但无法命名
- 在Typescript前端和NodeJs后端之间共享js对象的最佳方法
- 错误:未被捕获(承诺):错误:GoogleMaps没有提供者
- 编写TypeScript并发布浏览器和节点的库