【问题标题】:node js browserify implementation节点 js 浏览器化实现
【发布时间】:2016-09-21 11:53:24
【问题描述】:

我想在浏览器上使用我的自定义模块。例如我有一个 AppConfig.js 模块

'use strict'

var fs, configurationFile;

configurationFile =  './configs/appConfig.json';

fs = require('fs');

var AppConfig = function(){
function getMongoDbConnectionString()
{
    var configuration = JSON.parse(
        fs.readFileSync(configurationFile)
        );
    var connectionString= configuration.mongodbConnectionString;
    return connectionString;
}

    function getDistanceCondition()
{
    var configuration = JSON.parse(
        fs.readFileSync(configurationFile)
        );
    var distance= configuration.distanceBetweenTwoArmatures;
    return distance;
}

return {

    getMongoDbConnectionString : getMongoDbConnectionString,
    getDistanceCondition:getDistanceCondition


};

}

module.exports = AppConfig;

我想在浏览器上使用这个模块。为此,我安装了 browserify 模块。

npm install -g browserify

然后转到应用目录并运行此命令

browserify -r ./modules/AppConfig.js:AppConfig > ./public/javascripts/bundle.js

然后我在我的 html 文件中添加这一行。

<script src="/javascripts/bundle.js"></script>

现在我想在我的 javascritp 函数中使用这个模块。

var Configuration = require('AppConfig');
var configuration = new Configuration();
var connectionString= configuration.getDistanceCondition();

我调用了 getDistanceCondition() 函数但我出错了:

未捕获(承诺)类型错误:fs.readFileSync 不是函数(…)

我该如何解决这个问题? 你能给我一些信息吗?

【问题讨论】:

  • 你认为你可以在浏览器中用那个 mongodb 连接字符串做什么?顺便说一句,您可能不希望所有用户都看到它...
  • 我将从这个模块中删除 mongodb 连接字符串,这并不重要。首先我想成功运行这段代码。 . .

标签: javascript node.js npm browserify


【解决方案1】:

fs 不能被浏览器化。但是,由于您的配置文件是 JSON,并且您仅使用 fs 来读取该文件,因此您可以使用 require() 替换它:

var configuration = require(configurationFile);

Browserify 会将您的配置文件添加到捆绑包中。

【讨论】:

  • 这不会是结束。在提供配置文件和连接 mongodb 之间,这看起来像是 XY 问题的开始。
  • @DenysSéguret 我错过了 MongoDB 部分。除非 OP 打算使用 MongoDB 的(有限的)REST 接口,否则这确实会成为问题......
猜你喜欢
  • 2021-06-30
  • 2011-09-04
  • 2017-10-29
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
相关资源
最近更新 更多