how does a create-react app work without an index.html? - javascript

My react app (that I think is based of create-react-app - I didn't create it initially)
Doesn't use an index.html, it has an index.js, well it has a few index.js,
I want to know how this works? Basically when I run npm run build, a build folder isnt created, an es and a lib folder are created which are copies of the src folder (which contains the components)
Why are these two folders created and not a build?
I used an npm package: https://www.npmjs.com/package/react-chat-window
Here is my package.json (might hold the clues):
I really want to understand because on my server, I am using nginx, but it isnt routed to any of the files, the sites-available/default doesnt route to anywhere its the default settings so how does it work!?
{
"name": "react-chat-window",
"version": "1.0.8",
"description": "react-live-chat React component",
"main": "lib/index.js",
"module": "es/index.js",
"files": [
"css",
"es",
"lib",
"umd"
],
"scripts": {
"build": "nwb build-react-component --copy-files",
"clean": "nwb clean-module && nwb clean-demo",
"start": " nwb serve-react-demo",
"gh:publish": "nwb build-demo && gh-pages -d demo/dist"
},
"dependencies": {
"#material-ui/core": "^3.2.0",
"emoji-js": "3.2.2",
"fs": "0.0.1-security",
"gh-pages": "^1.0.0",
"material-ui": "^0.20.2",
"moment": "^2.24.0",
"prop-types": "15.5.10",
"react-highlight.js": "1.0.5",
"react-slick": "^0.23.2",
"slick-carousel": "^1.8.1",
"socket.io-client": "2.0.3"
},
"peerDependencies": {
"react": "16.6.0",
"react-dom": "^16.6.0"
},
"devDependencies": {
"nwb": "0.17.x",
"react": "^16.6.0",
"react-dom": "^16.6.0"
},
"author": "",
"homepage": "",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/kingofthestack/react-live-chat.git"
},
"keywords": [
"react-component"
]
}

you are not using create-react-app , you're using another boilerplate called nwb , here is his official documentation to understand how it works https://github.com/insin/nwb and here is his documentation concerning react
https://github.com/insin/nwb/blob/master/docs/guides/ReactApps.md#developing-react-apps-with-nwb

Related

Error when attempting to include Crypto module: Can't resolve 'crypto'

I am working on a register user setup in React JS, installed crypto library from to secure passwords but when I run the program , it gives me an error :
ERROR in ./node_modules/jwa/index.js 5:13-30
Module not found: Error: Can't resolve 'crypto' in 'E:\Node
Tutorial\registerSetup\client\node_modules\jwa'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js
core modules by default. This is no longer the case. Verify if you
need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
install 'crypto-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: {
"crypto": false }
Here is my package.json file :
{
"name": "registerSetup",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "NODE_ENV= production node server",
"dev": "nodemon server"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.1",
"cors": "^2.8.5",
"crypto": "^1.0.1",
"crypto-browserify": "^3.12.0",
"dotenv": "^15.0.0",
"express": "^4.17.2",
"express-jwt": "^6.1.0",
"express-validator": "^6.14.0",
"google-auth-library": "^7.11.0",
"jsonwebtoken": "^8.5.1",
"loadash": "^1.0.0",
"lodash": "^4.17.21",
"mongoose": "^6.1.8",
"morgan": "^1.10.0",
"node-fetch": "^3.2.0",
"nodemailer": "^6.7.2",
"nodemon": "^2.0.15"
}
}
The package.json for my react folder in registerSetup --> https://pastebin.com/hqBs7J4s
I think you should go to your node_modules/react-scripts/config/webpack.config.json and there write the following code in resolve block
fallback: {
"crypto": require.resolve("crypto-browserify")
}
Note: crypto-browserify should be installed
Crypto is a built-in Node module you don't have to install it. Uninstall "crypto": "^1.0.1" and then try:
const crypto = require("crypto")
You can try to downgrade the react-scripts in package.json version to : 4.0.3

How to use "import" in Node.js?

I tried to deploy my project developed using React and Node.js to Heroku, but after issuing git push heroku master, I got an error:
2020-06-05T02:12:18.092681+00:00 app[web.1]: import express from "express";
2020-06-05T02:12:18.092682+00:00 app[web.1]: ^^^^^^^
2020-06-05T02:12:18.092682+00:00 app[web.1]:
2020-06-05T02:12:18.092683+00:00 app[web.1]: SyntaxError: Unexpected identifier
2020-06-05T02:12:18.092683+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:718:23)
I googled and it is said that Node.js doesn't support ES6 syntax, and I can solve it by using babel.
But I don't know how to configure it.
Below are my files:
.babelrc.json:
{
"presets": [
[
"#babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
package.json:
{
"name": "react_e-commerce",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon --watch backend --exec babel-node backend/server.js",
"build": "rimraf dist && babel backend -d dist",
"heroku-postbuild": "npm run build && cd e-commerce && npm install && npm run build"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.9.16"
},
"devDependencies": {
"#babel/cli": "^7.10.1",
"#babel/core": "^7.10.1",
"#babel/node": "^7.10.1",
"#babel/preset-env": "^7.10.1",
"babel-cli": "^6.26.0",
"mkdirp": "^1.0.4",
"nodemon": "^2.0.4",
"rimraf": "^3.0.2"
},
"engines": {
"node": "12.4.0",
"npm": "6.9.0"
}
}
And my whole project is on https://github.com/powerseed/e-commerce-React
The e-commerce folder is for frontend.
Thanks in advance!
You can just use require if you want. Here are the details on why there are two ways to bring in files. The difference between "require(x)" and "import x"
per the Nodejs docs I was able to use the following to run node node-module.js and similar may work in your situation--I'm unfamiliar with the specific node version you're working with currently, but the "type":"module" option would likely allow it--I'm using Nodejs v15 at the moment.
package.json
{
"type": "module"
}
node-module.js
import * as os from 'os';
import defaultstuff, { stuff } from './node-import-stuff.js';
console.log(123 === stuff, defaultstuff, Object.keys(os));
node-import-stuff.js
export const stuff = 123;
export default stuff;

strapi upgrade from 3.0.x alpha to beta

I have been following this tutorial to play around with strapi
https://strapi.io/blog/building-a-static-website-using-gatsby-and-strapi
But when I installed, I installed alpha instead of beta
I am trying to upgrade to beta so I followed the instructions here
https://strapi.io/documentation/3.0.0-beta.x/migration-guide/migration-guide-alpha.26-to-beta.html
I followed the instructions to change modify package.json then I ran npm i which gave me an error of notarget No matching version found for strapi-hook-knex#3.0.0-beta.x.
then instead of what the documentation mentioned changing all alpha related to beta.x
"strapi": "3.0.0-alpha.26.2" -> "strapi": "3.0.0-beta.x"
I did "strapi": "^3.0.0-beta.17.5"
which makes the command npm i ran successfully so I continued with the instructions. After I am done, I tried running strapi develop I get an error of error Error: Missing extensions folder. Please create one in your app root directory so I added in the folder named extensions manually then try to start up strapi develop but then I get an error of error Error: Cannot find module 'strapi-hook-bookshelf/lib/utils/'
I tried removing node_modules clean npm cache and also the .cache folder within the project but none of those worked though.
Here is a complete modified package.json
{
"name": "cms",
"private": true,
"version": "0.1.0",
"description": "A Strapi application.",
"main": "./server.js",
"scripts": {
"develop": "strapi develop",
"start": "strapi start",
"build": "strapi build",
"strapi": "strapi",
"lint": "node_modules/.bin/eslint api/**/*.js config/**/*.js plugins/**/*.js"
},
"devDependencies": {
"babel-eslint": "^7.1.1",
"eslint": "^4.19.1",
"eslint-config-airbnb": "^13.0.0",
"eslint-plugin-import": "^2.11.0",
"eslint-plugin-react": "^7.7.0"
},
"dependencies": {
"axios": "^0.19.0",
"knex": "latest",
"lodash": "^4.17.5",
"pg": "^7.13.0",
"sqlite3": "latest",
"strapi": "^3.0.0-beta.17.5",
"strapi-admin": "^3.0.0-beta.17.5",
"strapi-email-nodemailer": "^0.2.1",
"strapi-hook-bookshelf": "^3.0.0-beta.17.5",
"strapi-hook-knex": "^3.0.0-beta.17.5",
"strapi-plugin-content-manager": "^3.0.0-beta.17.5",
"strapi-plugin-content-type-builder": "^3.0.0-beta.17.5",
"strapi-plugin-email": "^3.0.0-beta.17.5",
"strapi-plugin-upload": "^3.0.0-beta.17.5",
"strapi-plugin-users-permissions": "^3.0.0-beta.17.5",
"strapi-provider-upload-cloudinary": "^3.0.0-beta.17.5",
"strapi-utils": "^3.0.0-beta.17.5"
},
"author": {
"name": "abc",
"email": "",
"url": ""
},
"maintainers": [
{
"name": "abc",
"email": "",
"url": ""
}
],
"strapi": {
"uuid": "abcf5f65-060b-43f6-b98d-a4687fd81def"
},
"engines": {
"node": "10.x",
"npm": ">= 6.0.0"
},
"license": "MIT"
}
Anyone has idea what I have done wrong?
Thanks in advance for any suggestions + help.
Current versions before upgrading strapi
Strapi - 3.0.0-alpha.26.2 (global)
Node - v10.17.0
npm - 6.11.3
I was experiencing the same issue. I was able to resolve this by emptying my /api folder and the server started working again.

npm start runs listing directory in browser, not index.js

I setup tooling for a webpack/babel development server. When I run "npm start" from the command line, it displays the directory in my browser, not index.js. I'm just learning this; it's my first time creating a starter pack like this. My package.json file is below:
{
"name": "me_app",
"version": "1.0.0",
"description": "ME React-Redux Pump Builder",
"main": "index.js",
"scripts": {
"start": "node ./node_modules/webpack-dev-server/bin/webpack-dev server.js",
"test": "mocha --compilers js:babel-core/register --require ./test/test_helper.js --recursive ./test",
"test:watch": "npm run test -- --watch"
},
"author": "Daniel Crain",
"license": "ISC",
"directories": {
"lib": "lib"
},
"dependencies": {
"npm": "^6.4.1"
},
"devDependencies": {
"#babel/core": "^7.0.0",
"#babel/preset-env": "^7.0.0",
"#babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.2",
"react": "^16.5.0",
"react-dom": "^16.5.0",
"webpack": "^4.17.2",
"webpack-cli": "^3.1.0",
"webpack-dev-server": "^3.1.8"
},
"repository": {
"type": "git",
"url": "git+https://github.com/bluevision/React-Redux-Product- Configurator.git"
},
"bugs": {
"url": "https://github.com/bluevision/React-Redux-Product-
Configurator/issues"
},
"homepage": "https://github.com/bluevision/React-Redux-Product-
Configurator#readme"
}
If you list the files and directory structure of your project, would help to understand the exact problem, but as far as I know When you run npm start it will run your start command in your script object in package.json :
"start": "node ./node_modules/webpack-dev-server/bin/webpack-dev server.js",
And here the script is expecting to listen to a file named server.js not index.js
So Try to rename the file name or edit the name in your package.json.

Trouble importing custom library from a repository into an Ember project as a dependency

I am developing a WebGL library that I would like to import into an EmberJS project as a dependency. Unless I'm mistaken, I believe that I can do this via the repository directly without having to make an npm package but I am having trouble getting it to work.
I have made a watered down library and ember project in a couple repos here and here respectively to demonstrate my problem.
If you clone the library and run npm run build it'll make a test bundle which can be called by the test html file packageTest.html. It should print out 'Hello World Test Member is: 5'.
In the Ember project I have a component in which I would like to import the 'HelloWorld' class from the library and call one of its member methods.
import Ember from 'ember';
//import HelloWorld from 'npm-package-test';
export default Ember.Component.extend({
isWide: false,
actions: {
toggleImageSize() {
// var h = new HelloWorld();
// console.log(h.print());
this.toggleProperty('isWide');
}
}
});
When I uncomment the import statement I get the console error
Error: Could not find module 'npm-package-test'
I'm still pretty new to npm packaging and how dependencies work (and know next to nothing about Ember) but from my limited understanding I feel like this method should work the way I currently have it.
For the library, I have the source files being babeled into ES5 in its lib folder. As you can see in the package.json for the library below I have the main set to the index file in the lib folder so that the Ember project can pull the babeled modules.
Library: package.json
{
"name": "npm-package-test",
"version": "1.0.0",
"description": "JibJab Render Library for eCards",
"main": "lib/index.js",
"scripts": {
"prepublishOnly": "npm run build",
"build-test": "browserify test.js > demo/testbundle.js",
"build": "babel ./src -d ./lib && npm run build-test",
"lint": "eslint ./src",
"test": "nyc mocha --require babel-core/register"
},
"repository": {
"type": "git",
"url": "git+https://github.com/nhoughto5/NPM_PackageTest.git"
},
"author": "JibJab",
"license": "ISC",
"bugs": {
"url": "https://github.com/nhoughto5/NPM_PackageTest/issues"
},
"homepage": "https://github.com/nhoughto5/NPM_PackageTeste#readme",
"devDependencies": {
"babel-cli": "6.26.0",
"babel-preset-env": "1.6.1",
"eslint": "4.19.0",
"mocha": "5.0.4",
"nyc": "11.6.0"
},
"nyc": {
"reporter": [
"lcov",
"text"
]
},
"dependencies": {
"domready": "^1.0.8"
}
}
For reference, here is the lib/index.js which should be the entry point of my library:
Library: lib/index.js
'use strict';
module.exports = {
TestClass: require('./TestClass'),
HelloWorld: require('./HelloWorld')
};
In the ember project I have the library repository listed as a dependency:
Ember: package.json
{
"name": "test-ember-app",
"version": "0.0.0",
"description": "Small description for test-ember-app goes here",
"license": "MIT",
"author": "",
"directories": {
"doc": "doc",
"test": "tests"
},
"repository": "",
"scripts": {
"build": "ember build",
"start": "ember server",
"test": "ember test"
},
"devDependencies": {
"broccoli-asset-rev": "^2.4.5",
"ember-ajax": "^3.0.0",
"ember-browserify": "1.2.1",
"ember-cli": "2.13.1",
"ember-cli-app-version": "^3.0.0",
"ember-cli-babel": "^6.0.0",
"ember-cli-dependency-checker": "^1.3.0",
"ember-cli-eslint": "^3.0.0",
"ember-cli-htmlbars": "^1.1.1",
"ember-cli-htmlbars-inline-precompile": "^0.4.0",
"ember-cli-inject-live-reload": "^1.4.1",
"ember-cli-mirage": "0.4.3",
"ember-cli-qunit": "^4.0.0",
"ember-cli-shims": "^1.1.0",
"ember-cli-sri": "^2.1.0",
"ember-cli-tutorial-style": "2.0.0",
"ember-cli-uglify": "^1.2.0",
"ember-data": "^2.13.0",
"ember-export-application-global": "^2.0.0",
"ember-load-initializers": "^1.0.0",
"ember-resolver": "^4.0.0",
"ember-source": "~2.13.0",
"ember-welcome-page": "^3.0.0",
"loader.js": "^4.2.3"
},
"engines": {
"node": ">= 4"
},
"private": true,
"dependencies": {
"npm-package-test": "git+https://github.com/nhoughto5/NPM_PackageTest.git"
}
}
When I run npm install in the ember project I can see that the folder structure from the library appears in the node_modules folder. To my limited experience, everything seems correct but for some reason I am still getting this undefined module error.
Is there a step I've missed or some crucial detail I'm missing?
Yes, there’s one step you are still missing. For Ember-CLI to understand that you want to include your npm package in your app’s vendor files, you’ll need to use app.import as outlined here: https://guides.emberjs.com/v3.0.0/addons-and-dependencies/managing-dependencies/
That approach with app.import has existed since Ember-CLI 2.15, but if you are on an older version you’ll need to upgrade first.

Categories