Nodejs Cannot find module

假装没事ソ 提交于 2019-11-29 06:03:58

问题


I'm getting an error when trying to use any global module, exemple:

Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (C:\BitNami\wappstack\...\test\app.js)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

I installed the express command:

npm install -g express

My app.js:

var express = require('express');

And run it using windows powershell or node.js command prompt windows:

node app.js

do not really know what's going wrong, I read something about environment variables in windows, can this be?

Resolved / Update

The problem was: Windows environment variables was not configured for npm folder. Search for your npm folder and add the path in the environment variables.


回答1:


You should install Express locally:

npm install express

Then require it as you did:

var express = require('express')



回答2:


Just to quote from here:

https://www.npmjs.org/doc/files/npm-folders.html

  • Install it locally if you're going to require() it.
  • Install it globally if you're going to run it on the command line.
  • If you need both, then install it in both places, or use npm link.



回答3:


I was getting same error on Windows7/x64 and adding following in the environment variable resolved the issue:

NODE_PATH=C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules

*Replace [USERNAME] with your actual system username




回答4:


I'm working in Linux, but when I require express, I'm doing so with a relative path to where it is installed and it works fine:

var express = require('./public/node_modules/express');

I'm sure the same thing would work with a windows path as well. If you want to be more explicit and declare an absolute path, that would be the nuclear option to make sure you always know exactly where your module is being loaded from regardless of where your scripts are being run from.

If you still have a problem after using an explicit path, I don't know what the problem might be. . .




回答5:


another option will be to run npm install --save express



来源:https://stackoverflow.com/questions/21047030/nodejs-cannot-find-module

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!