尚未为上下文加载模块

Posted

技术标签:

【中文标题】尚未为上下文加载模块【英文标题】:Module has not been loaded yet for context 【发布时间】:2019-06-25 21:33:33 【问题描述】:

我正在尝试在我的 javascript 代码中使用 fs on。我以前在工作中使用过它并且对它很熟悉,但是,当我尝试在家里使用它时,我必须手动(因为我的项目很小,我没有使用 grunt 或其他辅助工具)设置 requirejs。我已经尝试了很多我可以在网上找到的例子,但我似乎无法让 fs 工作。在其当前的实现中,我的代码直接从我的 JS 文件中运行。我不断得到:

模块名称“fs”尚未加载上下文 我检查了require docs,他们说要实现这些功能: https://requirejs.org/docs/errors.html#notloaded

我已经尝试了文档中的每个配置以及我在网上找到的多个示例。我的文件目录现在都被顶起来了,但我又回到了一个错误。

在我的 js 文件中

require(['file-system'], function (fs) 
    //fs is now loaded.
    console.log('fs', fs);
);

在我的 html 中,它在尝试的迭代中发生了变化,但基于此:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <script data-main="jsFile.js" src="scripts/require.js"></script>
    </head>
    <body>
        <p id="cards"></p>
        <p id='POS'></p>
        <script src="jsFile.js"></script>
   </body>
   </html>

结果执行我的代码,错误为:

未捕获的错误:名称“fs”:_。使用 >require([]) https://requirejs.org/docs/errors.html#notloaded 在 makeError (require.js:5) 在 Object.s [按要求] (require.js:5) 在 requirejs (require.js:5) 在 file-system.js:5

【问题讨论】:

【参考方案1】:

file-system 库仅在 Node 环境、服务器端或命令行中运行。因此,它不会像您在此处尝试的方式那样直接从客户端脚本访问。

还有其他 NPM 包在浏览器的前端模拟 fs API。但是您仍然需要以使包的源代码在运行时可用的方式进行设置。这可能涉及将脚本从 node_modules 复制到服务器端代码中的公共目录或使用构建管道工具,例如 Gulp。

但是,一般来说,在浏览器中运行的客户端 JS 根本不应该依赖于访问外部文件系统(文件输入或其他提供此类访问的用户活动除外)。

【讨论】:

以上是关于尚未为上下文加载模块的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的错误:尚未为上下文_加载模块名称“ @ cloudant / cloudant”。在javascript中使用require([])

Karma/Jasmine 测试失败并出现错误:'未捕获的错误:尚未为上下文加载模块名称“simple_test.js”:_。使用要求([])'

错误:尚未正确初始化 Azure PowerShell 上下文。请导入模块并重试

在打字稿进口NPM包

EF中的EntityState状态解读

require.js 源码解读——配置默认上下文