- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在我的nodejs应用程序中使用模块别名。本地一切正常,正在找到文件路径和模块。
但是,当在 Heroku 上部署时,我的别名都未被识别,并且出现此错误
Error: Cannot find module 'app/models/socket.js'
app[web.1]: at Function.Module._resolveFilename (module.js:536:15)
app[web.1]: at Function.Module._load (module.js:466:25)
app[web.1]: at Module.require (module.js:579:17)
app[web.1]: at require (internal/module.js:11:18)
app[web.1]: at Object.<anonymous> (/app/bin/www:17:21)
app[web.1]: at Module._compile (module.js:635:30)
app[web.1]: at Object.Module._extensions..js (module.js:646:10)
app[web.1]: at Module.load (module.js:554:32)
app[web.1]: at tryModuleLoad (module.js:497:12)
app[web.1]: at Function.Module._load (module.js:489:3)
app[web.1]: npm ERR! code ELIFECYCLE
app[web.1]: npm ERR! errno 1
package.json
{
"name": "nameless",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"commit": "commit-wizard"
},
"engines": {
"node": "8.9.1"
},
"dependencies": {
"apn": "^2.2.0",
"apn-test": "^1.3.1",
"app-module-path": "^2.2.0",
"async": "^0.9.0",
"await-timeout": "^0.3.0",
"aws-subdomain": "^0.1.2",
"base64-img": "^1.0.3",
"bcrypt": "^0.8.7",
"bluebird": "^2.10.2",
"body-parser": "~1.8.1",
"change-case": "^2.1.6",
"circle-to-polygon": "^1.0.0",
"cookie-parser": "~1.3.3",
"cors": "^2.8.4",
"cron": "^1.3.0",
"debug": "^4.1.0",
"diet": "^0.16.0",
"ejs": "^2.5.7",
"express": "~4.9.0",
"express-async-handler": "^1.1.4",
"express-fileupload": "^0.3.0",
"express-fileuploader-s3": "0.0.1",
"express-sslify": "^1.2.0",
"express-subdomain": "^1.0.2",
"fb": "^1.1.1",
"fcm-node": "^1.2.1",
"fcm-push": "^1.1.3",
"geocoder": "^0.2.3",
"geojson-area": "^0.2.1",
"geojson-polygon-center": "0.0.0",
"geojson-rewind": "^0.2.0",
"google-libphonenumber": "^3.0.12",
"google-locations": "^0.1.2",
"googleplaces": "^0.6.0",
"graceful-fs": "^4.1.15",
"gulp": "^3.8.10",
"gulp-concat": "^2.6.0",
"gulp-ng-annotate": "^1.0.0",
"gulp-nodemon": "^1.0.5",
"gulp-replace-task": "^0.2.1",
"gulp-run": "^1.6.6",
"gulp-sloc": "^1.0.4",
"gulp-sourcemaps": "^1.12.1",
"gulp-stylus": "^2.7.0",
"gulp-uglify": "^1.2.0",
"http": "0.0.0",
"http-request": "^0.7.0",
"instagram-api": "^1.0.3",
"instagram-node": "git+https://github.com/andrewoodleyjr/instagram-node.git",
"instagram-node-api": "^1.6.0",
"instagram-node-lib": "^0.1.1",
"jade": "~1.6.0",
"json2csv": "^2.12.0",
"jwt-simple": "^0.2.0",
"knox": "^0.9.2",
"linkedin-scraper2": "https://github.com/andrewoodleyjr/node-linkedin-scraper2/tarball/master",
"mobile-detect": "^1.4.1",
"module-alias": "^2.1.0",
"mongoose": "^5.0.4",
"mongoose-query-random": "^1.0.1",
"mongoose-random": "^0.1.1",
"mongoose-simple-random": "^0.4.1",
"morgan": "~1.3.0",
"multer": "^0.1.6",
"ng-intl-tel-input": "^2.0.0",
"node-cron": "^1.2.1",
"node-foursquare": "^0.3.2",
"node-foursquare-venues": "^1.1.0",
"node-instagram": "^2.0.2",
"node-linkedin": "git+https://github.com/andrewoodleyjr/node-linkedin.git",
"nodemailer": "^1.3.0",
"nodemailer-ses-transport": "^1.5.1",
"nodemon": "^1.14.12",
"opbeat": "^4.17.0",
"polygon-centroid": "^1.0.0",
"prerender-node": "^2.7.4",
"q": "^1.5.1",
"quickthumb": "0.0.11",
"raw-body": "^2.3.2",
"request": "^2.83.0",
"sendy-api": "git://github.com/igord/sendy-api.git",
"serve-favicon": "^2.4.5",
"socket.io": "1.7.2",
"stripe": "^6.3.0",
"swagger": "0.0.1",
"swagger-node-express": "^2.1.3",
"swagger-tools": "^0.9.0",
"tempie": "0.0.2",
"timezone-compute": "^0.2.2",
"timezoner": "^0.1.9",
"twilio": "^3.11.3",
"validator": "^3.27.0",
"vhost": "^3.0.2",
"webpack": "^4.26.0",
"webpack-node-externals": "^1.7.2"
},
"devDependencies": {
"eslint": "^5.9.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-import-resolver-alias": "^1.1.1",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.2",
"eslint-plugin-react": "^7.11.1",
"prettyjson": "^1.2.1"
},
"_moduleAliases": {
"@root": "./",
"@db": "db/",
"@models": "models/",
"@util": "util/",
"db": "db/db.js",
"config.js": "config.js"
}
}
bin/www
require('module-alias/register');
const SocketModel = require('@models/socket.js');
const app = require('@root/app.js');
最佳答案
请注意,如果还没有解决方案,这只是最后的手段。
因为OP说它在本地构建和工作。
让 typescript 忽略那些特定的导入。为每个带有别名的导入添加 //@ts-ignore
。我知道这是一个丑陋的解决方案,但到目前为止没有任何效果。请注意,此解决方法仍然需要 module-alias
。
既然你说它在本地工作,那么我相信在构建过程中让 typescript 忽略这些文件并不是什么大问题,因为我们关心的是文件被编译为 javascript。当然,您需要测试编译后的js文件才能确定。
该问题与 typescript 在构建过程中未解析到相应路径的路径映射有关。
您可以找到更多信息here 。如果您想手动转换编译文件上的这些路径映射,另请检查该答案的注释。
另一个相关issue .
关于javascript - 如何解决 Heroku 上找不到模块的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53440076/
我最近在我的机器上安装了 cx_Oracle 模块,以便连接到远程 Oracle 数据库服务器。 (我身边没有 Oracle 客户端)。 Python:版本 2.7 x86 Oracle:版本 11.
我想从 python timeit 模块检查打印以下内容需要多少时间,如何打印, import timeit x = [x for x in range(10000)] timeit.timeit("
我盯着 vs 代码编辑器上的 java 脚本编码,当我尝试将外部模块包含到我的项目中时,代码编辑器提出了这样的建议 -->(文件是 CommonJS 模块;它可能会转换为 ES6 模块。 )..有什么
我有一个 Node 应用程序,我想在标准 ES6 模块格式中使用(即 "type": "module" in the package.json ,并始终使用 import 和 export)而不转译为
我正在学习将 BlueprintJS 合并到我的 React 网络应用程序中,并且在加载某些 CSS 模块时遇到了很多麻烦。 我已经安装了 npm install @blueprintjs/core和
我需要重构一堆具有这样的调用的文件 define(['module1','module2','module3' etc...], function(a, b, c etc...) { //bun
我是 Angular 的新手,正在学习各种教程(Codecademy、thinkster.io 等),并且已经看到了声明应用程序容器的两种方法。首先: var app = angular.module
我正在尝试将 OUnit 与 OCaml 一起使用。 单元代码源码(unit.ml)如下: open OUnit let empty_list = [] let list_a = [1;2;3] le
我在 Angular 1.x 应用程序中使用 webpack 和 ES6 模块。在我设置的 webpack.config 中: resolve: { alias: { 'angular':
internal/modules/cjs/loader.js:750 return process.dlopen(module, path.toNamespacedPath(filename));
在本教程中,您将借助示例了解 JavaScript 中的模块。 随着我们的程序变得越来越大,它可能包含许多行代码。您可以使用模块根据功能将代码分隔在单独的文件中,而不是将所有内容都放在一个文件
我想知道是否可以将此代码更改为仅调用 MyModule.RED 而不是 MyModule.COLORS.RED。我尝试将 mod 设置为变量来存储颜色,但似乎不起作用。难道是我方法不对? (funct
我有以下代码。它是一个 JavaScript 模块。 (function() { // Object var Cahootsy; Cahootsy = { hello:
关闭。这个问题是 opinion-based 。它目前不接受答案。 想要改进这个问题?更新问题,以便 editing this post 可以用事实和引文来回答它。 关闭 2 年前。 Improve
从用户的角度来看,一个模块能够通过 require 加载并返回一个 table,模块导出的接口都被定义在此 table 中(此 table 被作为一个 namespace)。所有的标准库都是模块。标
Ruby的模块非常类似类,除了: 模块不可以有实体 模块不可以有子类 模块由module...end定义. 实际上...模块的'模块类'是'类的类'这个类的父类.搞懂了吗?不懂?让我们继续看
我有一个脚本,它从 CLI 获取 3 个输入变量并将其分别插入到 3 个变量: GetOptions("old_path=s" => \$old_path, "var=s" =
我有一个简单的 python 包,其目录结构如下: wibble | |-----foo | |----ping.py | |-----bar | |----pong.py 简单的
这种语法会非常有用——这不起作用有什么原因吗?谢谢! module Foo = { let bar: string = "bar" }; let bar = Foo.bar; /* works *
我想运行一个命令: - name: install pip shell: "python {"changed": true, "cmd": "python <(curl https://boot
我是一名优秀的程序员,十分优秀!