问题
I am working on an application via the toolchain tool on IBM Cloud and editing the code via the Eclipse Orion IDE. As I am not accessing this through my local cli, my understanding is that in order to so call npm install {package}
, I would just need to include the package in the package.json
file under dependencies and require
it in my app. However, when I load the application, I get the require is not defined indicating that the package has not been installed. Moreover, the require()
is being used in the app.js
file with the application being launched but not from files in my public
directory.
After playing around further, it seems it might have to do with the way the directory tree is being traced as the error is only thrown in subdirectories. For example, require('express')
works in app.js
which is in the main directory ./
but fails when it is called in test.js
in ./subdirectory/test.js
. I feel like I'm missing something painfully simple like configuration of endpoint or something.
I've been searching around but I can't seem to find how to get the packages loaded, preferably without using the cli. Appreciate any pointers. Thanks!
Update: After playing around further, I am also getting module is not defined error when trying to require from another file in the same directory. For example module.exports = 'str'
returns this error. While trying to require('./file')
returns the require is not defined. It might have to do with how node is wrapping the functions?
Update 2: Tried "start": "npm install && node app.js"
in package.json
but no luck. Adding a build stage which calls npm install
before deployment also does not work
Update 3: After adding npm install
build stage, I am able to see that the dependencies have been successfully built via the logs. However, the require is not defined error still persists.
Update 4: Trying npm install from my CLI doesn't work as well even though all packages and dependencies are present
Update 5: Running cf restage
or configuring cache via cacheDirectories
does not work as well
Opened a related question regarding deployment here
回答1:
Found out my confusion was caused due to me not realizing that require()
cannot be used on the client side unless via tools such as Browserify.
来源:https://stackoverflow.com/questions/55213650/node-package-dependencies-on-ibm-cloud-foundry-require-module-is-not-defined