Sim*_*dge 1 path next.js vercel
我正在尝试将 json 文件路径传递给 eBay 身份验证函数以获取令牌。这通过单独指定文件名在本地起作用。但是,由于我将下一个 js 应用程序部署为 Vercel 中的 Node,因此我需要调用 readFileSync 以确保 json 文件包含在构建中。
为此,我已实施:-
const { readFileSync } = require("fs");
var path = require("path");
const file = readFileSync(
path.join(__dirname, "config/eBayJson.json"),
"utf8"
);
Run Code Online (Sandbox Code Playgroud)
在我的 getServerSideProps 中。
但是,尽管我的文件显然位于正确的路径,并且我正在调用 __dirname 以确保我拥有正确的路径。我仍然收到错误,现在在本地和 vercel 部署中,文件或目录不存在:-
Error: ENOENT: no such file or directory, open '\config\eBayJson.json'
at Object.openSync (node:fs:490:3)
at readFileSync (node:fs:391:35)
at getServerSideProps (D:\Web\StoreApp\nextjs-store\.next\server\pages\inventory.js:3846:16)
at renderToHTML (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\render.js:40:221)
at async D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\next-server.js:112:97
at async D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\next-server.js:105:142
at async DevServer.renderToHTMLWithComponents (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\next-server.js:137:387)
at async DevServer.renderToHTML (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\next-server.js:138:522)
at async DevServer.renderToHTML (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\server\next-dev-server.js:35:578)
at async DevServer.render (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\next-server.js:75:236)
at async Object.fn (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\next-server.js:59:580) at async Router.execute (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\router.js:25:67)
at async DevServer.run (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\next-server.js:69:1042)
at async DevServer.handleRequest (D:\Web\StoreApp\nextjs-store\node_modules\next\dist\next-server\server\next-server.js:34:504) {
errno: -4058,
syscall: 'open',
path: '\\config\\eBayJson.json'
}
Run Code Online (Sandbox Code Playgroud)
我对自己做错的事情感到不知所措。我能找到的大多数堆栈溢出答案都是关于缺少我已经包含的 __dirname 。
非常感谢任何帮助!
解决了
感谢 @juliomalves 和此线程的帮助: - /sf/answers/4610314061/,用更新的代码解决了我的问题:
export async function getServerSideProps(req, res) {
const { readFileSync } = require("fs");
var path = require("path");
const configDirectory = path.resolve(process.cwd(), "config");
const file = readFileSync(
path.join(configDirectory, "eBayJson.json"),
"utf8"
);
const EbayAuthToken = require("ebay-oauth-nodejs-client");
const ebayAuthToken = new EbayAuthToken({
filePath: path.join(configDirectory, "eBayJson.json"),
// input file path.
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9218 次 |
| 最近记录: |