【问题标题】:MEAN stack node require is not defined未定义 MEAN 堆栈节点要求
【发布时间】:2015-04-03 06:51:48
【问题描述】:

我正在尝试使用 MEAN 堆栈上的应用程序,但在使用节点 require 函数时遇到了问题。

我目前的结构如下:

-- app
   -- images
   -- scripts
      -- app.js // app configuration
      -- contollers.js 
      -- models.js
      -- routes.js
   -- styles // scss partials
-- node_modules
-- public
   -- images
   -- scripts
      -- app.js  // concatenated and uglified js from app/scripts
   -- styles // concatenated and compressed scss partials
   -- vendor // third party libraries
   -- views // html partials
   bower.json
   index.html
   gruntfile.js
   pacakge.json
   server.js

注意:我知道这不是构建我的应用程序的最佳方式,并将对其进行重构,以便它使用更多的modular system

我遇到的问题是,当我将 var mongoose = require('mongoose'); 添加到 models.js 文件时,我收到以下错误:

ReferenceError: 要求未定义

令人费解的是,这行代码在server.js中完美运行,为什么在models.js中不行?

【问题讨论】:

  • 看起来很奇怪,它当然应该在 models.js 中工作,假设您仍然在节点而不是浏览器中运行它。浏览器没有内置 require 方法,因此使用了串联构建过程。
  • 我正在通过浏览器运行它。这听起来像问题。我该如何解决这个问题?我一直在关注的所有教程似乎都没有做任何特别的事情来让 require 在浏览器中工作。我不完全了解这个节点巫毒是如何工作的。
  • 好吧,你不能直接从浏览器访问数据库,所以我怀疑你应该在浏览器脚本中包含猫鼬。
  • 很遗憾,没有,当我开始使用它时,我没有关注任何东西,而是使用 yeoman-generators,然后对它们进行逆向工程,直到我了解它们在做什么。
  • 这是一个,虽然我没有专门使用过这个:meanjs.org/generator.html

标签: javascript angularjs node.js express mongoose


【解决方案1】:

好的,所以我把这一切都倒过来了。我没有在服务器端运行模型,因此节点的require 函数不可用。这一点现在看起来很明显,以至于我对这一点有了更好的理解。

在阅读了 MEAN 应用程序的结构后,我重新构建了我的应用程序。

如果有人在理解这种 MEAN 魔法的工作原理时遇到问题,我遇到的最佳资源是 scotch.io 上的 this little collection of mean tutorials

最值得注意的是setting up a mean stack single page application上的本教程

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 2016-05-29
    • 2014-09-23
    • 2018-07-14
    • 2019-03-13
    • 2019-06-24
    • 2017-03-08
    • 2017-11-05
    相关资源
    最近更新 更多