Javascript 使用express时未找到模块
我想在electron应用程序中公开REST服务,我想在electron中使用expressJS,正如教程中所说,我添加了express和@types/express。我试图公开一个“get”,但当我构建并运行它时,它抛出以下命令 使用Javascript 使用express时未找到模块,javascript,typescript,express,npm,electron,Javascript,Typescript,Express,Npm,Electron,我想在electron应用程序中公开REST服务,我想在electron中使用expressJS,正如教程中所说,我添加了express和@types/express。我试图公开一个“get”,但当我构建并运行它时,它抛出以下命令 使用ng build--prod运行 这是我第一次想做这种事情,所以如果我不知道smth,请原谅 package.json: > { "name": "angular-electron", "version": "0.0.0", "main": "m
ng build--prod运行
这是我第一次想做这种事情,所以如果我不知道smth,请原谅
package.json:
> {
"name": "angular-electron",
"version": "0.0.0",
"main": "main.js",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"electron": "electron .",
"electron-build": "ng build --prod && electron ."
},
"private": true,
"dependencies": {
"@angular/animations": "^6.0.4",
"@angular/common": "^6.0.4",
"@angular/compiler": "^6.0.4",
"@angular/core": "^6.0.4",
"@angular/forms": "^6.0.4",
"@angular/http": "^6.0.4",
"@angular/platform-browser": "^6.0.4",
"@angular/platform-browser-dynamic": "^6.0.4",
"@angular/router": "^6.0.4",
"@types/express": "^4.16.0",
"angular-svg-round-progressbar": "^2.0.0",
"core-js": "^2.5.4",
"express": "^4.16.3",
"js-sha256": "^0.9.0",
"rxjs": "^6.2.0",
"rxjs-compat": "^6.2.0",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.6.6",
"@angular/cli": "~6.0.7",
"@angular/compiler-cli": "^6.0.4",
"@angular/language-service": "^6.0.4",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"electron": "^2.0.2",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1",
"typescript": "~2.7.2"
}
}
这个项目工作得很好,直到我添加了快速部分,它工作得很好
var app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
您的解决方案中现在有2个应用程序:
1) 客户端应用程序:在浏览器环境中运行的angular
2) 服务器应用程序:在节点环境中运行的express
构建angular应用程序(使用ng build)时,必须确保angular build中不包含express应用程序文件。express使用的节点模块在浏览器环境中不可用
你可以做:
1) 将express源从src文件夹移到项目根目录中
// server.js
var express = require('express');
var app = express();
app.use(express.static('dist')); // or where the output of the ng-build is placed
app.listen(3000, function() { console.log('Server running on port 3000'); });
2) 运行ng build
3) 从项目根目录运行node server.js
。这将继续运行
4) 转到localhost:3000
并查看您的应用程序我已经尝试了互联网上的所有解决方案,但实际上没有任何效果。我的项目使用的是angular universal,它可以在服务器端快速呈现应用程序。
一天早上,我突然发现这个错误,我的项目没有运行
浏览器:{
“fs”:错误
}
有人建议修理。这甚至不起作用。花了我一整天的时间。
我开始分析我的旧代码,发现我没有在package.json上添加任何内容,因此它不可能是任何其他依赖项。
当我发现出了什么问题时,真是愚蠢透顶。我意外地将路由器从组件中的express导入
怎么了
import { Router } from 'express';
应该是什么
import { Router } from '@angular/router';
哇,伙计,那块错误信息打破了我的屏幕。似乎您没有安装所有的软件包,如果您使用的是8.NodeJS 8.11.3之前的NodeJS
版本并尝试了npm安装--save,您是否尝试过npm安装--save。没有什么不同于我所展示的:(您的文件名是Package.json
还是Package.json
,因为它应该是一个小写字母。另一件事可能是您在局部变量中没有指向NodeJS
的正确路径。很抱歉误解,我会立即更改它,它是Package.json。请尝试删除node_模块和Package-lock.js。)使用npm iThanks dude重新安装deps,现在两次拯救了我的一天!谢谢@biswarup,我犯了同样的错误,从express导入路由器。太感谢了!我都没意识到我也这么做了。泰!
import { Router } from '@angular/router';