Uncaught module jqueryify not found

2019-05-04 07:32发布

问题:

My situation

I'm checking out spine.js for a web application I'm thinking of writing. I've read all the documentation and gone through all the examples. Now I'm trying to run the spine.contacts example project on my own Windows 7 laptop.

I'm running node v0.6.6 for Windows

What I've done

  • Installed node
  • Installed spine, spine-app and hem through npm
  • Extracted spine.contacts in a folder
  • Run npm install . inside the folder, which created the node_modules folder with a bunch of directories inside, including jqueryify
  • Run hem server to start the test server
  • Basically followed all the instructions to the letter

The problem

Running the application in Chrome (http://localhost:9294), JavaScript throws an exception at line 9 in index.html (I've included index.html below). It reads "Uncaught module jqueryify not found". I know the jqueryify dependency was installed by npm earlier, but I tried removing that line anyway and linking in jQuery manually. Now I got the error "Uncaught module index not found" in application.js. That certainly isn't a dependency error, since the index.js file is local and it's the main script file in the project.

So it seems there's a problem with the require function. I've Googled a lot and nothing I've found has indicated that spine.js shouldn't work on Windows.

Any ideas?


Some links

  • The GIT page for spine.contacts
  • A demo of the exact same project on herokuapp.com

index.html:

<!DOCTYPE html>
<html>
<head>
  <meta charset=utf-8>
  <title>App</title>
  <link rel="stylesheet" href="/application.css" type="text/css" charset="utf-8">
  <script src="/application.js" type="text/javascript" charset="utf-8"></script>
  <script type="text/javascript" charset="utf-8">
    var jQuery  = require("jqueryify"); // I'm line 9!!
    var exports = this;
    jQuery(function(){
      var App = require("index");
      exports.app = new App({el: $("#article")});      
    });
  </script>  
</head>
<body>
  <header id="header"><h1>Spine Contacts</h1></header>
  <article id="article"></article>
</body>
</html>

回答1:

Hem is not supported on Windows. I found myself in the same situation and tried the same approaches.

More info here: https://github.com/maccman/hem/issues/23



回答2:

Try inserting that before line 9:

for(var winPath in require.modules)
{
path = winPath.replace(/\\/g, '/'); 
path = path.match('/node_modules/') ? path.split('/node_modules/')[1] : path;
path = path.match('/app/') ? path.split('/app/')[1] : path;
require.modules[path] = require.modules[winPath];
}

I think a fix will be there soon.