无法获取javascript文件来加载node_modules依赖项

时间:2018-01-16 20:14:57

标签: javascript jquery angularjs node.js node-modules

我的应用程序是Node.JS,使用.ejs呈现视图。

我正在尝试从node_modules获取一个依赖文件夹,而不是必须将该node_module模块(jquery,angular,moment,jquery-ui,kendo-ui-core等)放在我的'public'中用于获取应用程序资产或必须在我的.ejs(html)文件中引用脚本标记中的CDN的文件夹。我试过添加:

   var moment = require('moment');

在我的server.js(或你称之为'app.js'或'index.js'文件)的应用程序的根目录,但这似乎没有抓住这个文件夹。我也尝试过放置

   var moment = require('moment');

在javascript(.js)文件中,位于最顶层并收到错误消息:“require is not defined”。我假设NodeJ应该知道哪些模块在Node_modules文件夹中,所以我想可能在我的server.js文件中,node_modules没有设置为像我正在使用的公共文件夹那样使用。

app.use(express.static(__dirname + '/public'));

使用app.use功能。我查看过的大多数教程甚至文档只是给出了简单的指令:'只需添加var moduleName = require('module');'但他们并没有详细说明我在哪个文件中执行此操作,或者除了将变量声明为require函数之外还有其他任何操作可以设置它。我不使用模块加载器,所以这可能是我没有定义需求的原因。另外,我想也许安装全局(-g)或本地安装这些模块可能是一个原因。但是,完全迷失了。

总结:如何在我的一个javascript文件中使用node_modules,如何在不将node文件移出node_modules的情况下在我的.ejs文件中使用它?

1 个答案:

答案 0 :(得分:0)

运行Node.js应用程序时需要遵循一定的流程。下面我将列举使用Node.js提供的npm时要采取的步骤:

  1. 在您的环境中安装Node.js
  2. 安装Node后,您将可以访问终端中的npm功能
  3. 在文件夹(称为存储库)中,您要放置应用程序,打开终端并运行npm init。这将创建一个名为package.json的文件,其中应用程序的所有依赖项将与应用程序的其他数据一起列出
  4. 安装任何依赖项运行npm install appname(例如npm install jquery
  5. 您首次运行node_modules时将创建的npm install文件夹中的所有依赖项都将可用,并且还会列在package.json
  6. 使用您需要的任何index.js语句在应用程序的文件夹(存储库)中创建require文件
  7. 在您的termimal中运行node index.js,这将启动节点,任何require语句都可以正常工作,只要您有npm install
  8. 我希望这会有所帮助。请记住,节点在浏览器外部的环境中运行javascript,在本地机器中就是这样。

    最后一件事,你引用的app.use(express.static(__dirname + '/public'));实际上是一个中间件,当你的应用程序像服务器那样运用时,它与require无关。