我遵循本教程,以便在vercel构建期间生成静态文件。我试着移动文件,但它总是显示一个日志,如:
23:41:48.432 $ node ./pages/api/build.js 23:41:48.493 Build time file created successfully! 23:41:48.495 Done in 0.09s. 23:41:48.507 Error: A "routes-manifest.json" couldn't be found. This is normally caused by a misconfiguration in your project.
然后链接到这个。我检查了问题,一切似乎都很好。
如果我从包中删除"vercel-build": "node ./pages/api/build.js"
行。Json,错误消失。还有功能…
my pages/api/index.js文件:
const BuiltTime = require('./built-time');
module.exports = (req, res) => {
res.setHeader('content-type', 'text/plain');
res.send(`
This Serverless Function was built at ${new Date(BuiltTime)}.
The current time is ${new Date()}
`);
};
我的页面/build.js:
const fs = require('fs');
fs.writeFile(
'pages/api/built-time.js',
`module.exports = '${new Date()}'`,
(err) => {
if (err) throw err;
console.log('Build time file created successfully!');
}
);
我package.json:
{
...
"scripts":{
"vercel-build": "node ./pages/api/build.js",
}
}
最后我没有使用" vercel-build "。我只是在构建之前运行一个脚本:
// package.json
{
"scripts": {
"make-q": "node ./build.js",
"build": "yarn run make-q && next build",
}
构建文件不能使用import或调用typescript文件(至少现在):
// build.js
const slugify = require('./utils/slugify');
const fs = require('fs');
const qs = slugify('some string');
fs.writeFile(
'questionsDB.js',
`module.exports = ${JSON.stringify(qs, null, 2)}`,
(err) => {
if (err) throw err;
console.log('file created successfully!');
}
);
最后,在pages/api/test.js中:
const db = require('../../db');
module.exports = (req, res) => {
res.setHeader('content-type', 'text/plain');
res.send(`
working:
${db}
`);
};
现在,如果我调用url/api/test
,我得到基于构建的结果。
我尝试过但失败的事情:
- 不同节点版本
- 更新nextjs
- 删除线。锁定并重新构建