【问题标题】:Uncaught ReferenceError: require is not defined in svelte/sapper未捕获的 ReferenceError:在 svelte/sapper 中未定义 require
【发布时间】:2020-10-23 03:34:35
【问题描述】:

尝试使用 svelte/sapper 创建类似博客的应用程序,因此我目前正在将帖子作为 JSON 对象写入文件。但是,当我尝试使用 fs 时,出现以下错误:

Uncaught ReferenceError: require is not defined

下面的文件在 src/routes 文件夹中,是处理文件写入功能的:

_write.js

function writeFile(obj) {
  var fs = require("fs");
  fs.writeFile('C:/Users/Toby/Documents/GitHub/political-web/src/routes/_posts.js', 'const posts = ' + obj + '; export default posts;', function (err) {
    if (err) throw err;
    console.log('Done!');
  });
}

export default writeFile;

关于我做错了什么有什么想法吗?

【问题讨论】:

  • 您是否在 Node.js 中运行您的代码?在 Node.js 之外,require 不存在。另外,我相信您应该始终在模块的开头而不是在函数内部执行所有需要/导入的内容。据我所知,Node.js 不支持importexport,浏览器也无权访问文件系统。我不认为你正在做的事情可以发挥作用。
  • @connexo 嗯,好吧,你知道如何/是否可以将变量从 svelte 组件传递给 node.js 文件,以及是什么让 js 文件成为 node.js 文件?

标签: javascript fs svelte sapper


【解决方案1】:

不知道为什么你会得到那个特定的错误——require应该在代码运行时定义,除非你以某种方式在你的客户端应用程序中导入它(例如通过组件)。

假设情况并非如此,并且您只是从服务器代码中导入_write.js,请像这样重写它:

import fs from 'fs';

function writeFile(obj) {
  fs.writeFile('C:/Users/Toby/Documents/GitHub/political-web/src/routes/_posts.js', 'const posts = ' + obj + '; export default posts;', function (err) {
    if (err) throw err;
    console.log('Done!');
  });
}

export default writeFile;

【讨论】:

  • 谢谢你,虽然我仍然遇到问题,因为我收到错误Failed to resolve module specifier "fs". 在将它导入我的客户端应用程序方面,我将函数 writeFile 导入到一个纤细的组件中,如果这很重要。如果是这样,我想知道如何从一个纤细的组件访问 writeFile 函数?因为目的是将从组件获得的变量写入文件。 (可能会以错误的方式解决这个问题,因为我对 js 框架还是很陌生)
  • 您无法从客户端代码访问fs。相反,使用post 导出创建一个服务器路由(sapper.svelte.dev/docs#Server_routes),并将数据发布到它(fetch('my-server-route', { method: 'post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }).then(...)
猜你喜欢
  • 2016-10-06
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 2016-11-03
  • 2011-01-05
相关资源
最近更新 更多