天道酬勤,学无止境

模块解析失败(Module parse failed)

问题

我将在网络上移植 GiftedMessanger。

我在 Webpack 包中遇到了一个错误:

Krishti:react-native-web-exploding-hearts-master MacBook$ npm run web-bundle

> react-native-web-exploding-hearts@0.0.1 web-bundle /Users/MacBook/WebWork/ReactWeb/react-native-web-exploding-hearts-master
> NODE_ENV=production webpack --config web/webpack.config.js --colors

Crawl: 6012ms
Hash: d8df1262d7af54a6c6cd
Version: webpack 1.12.10
Time: 10949ms
   [0] multi main 28 bytes {0} [built]
    + 339 hidden modules

ERROR in ./~/react-native-gifted-messenger/GiftedMessenger.js
Module parse failed: /Users/MacBook/WebWork/ReactWeb/react-native-web-exploding-hearts-master/node_modules/react-native-gifted-messenger/GiftedMessenger.js Line 1: Unexpected token
You may need an appropriate loader to handle this file type.
| import React, {
|   Text,
|   View,
 @ ./GiftedMessengerContainer.js 19:22-62

我不知道究竟是什么问题。 我的网络配置文件是

   'use strict';

var path = require('path');
var webpack = require('webpack');
var HtmlPlugin = require('webpack-html-plugin');
var HasteResolverPlugin = require('haste-resolver-webpack-plugin');

var IP = '0.0.0.0';
var PORT = 3000;
var NODE_ENV = process.env.NODE_ENV;
var ROOT_PATH = path.resolve(__dirname, '..');
var PROD = 'production';
var DEV = 'development';
let isProd = NODE_ENV === 'production';

var config = {
  paths: {
    src: path.join(ROOT_PATH, '.'),
    index: path.join(ROOT_PATH, 'index.ios'),
  },
};

module.exports = {
  ip: IP,
  port: PORT,
  devtool: 'source-map',
  resolve: {
    alias: {
      'react-native': 'react-web',
    },
    extensions: ['', '.js', '.jsx'],
  },
  entry: isProd? [
    config.paths.index
  ]: [
    'webpack-dev-server/client?http://' + IP + ':' + PORT,
    'webpack/hot/only-dev-server',
    config.paths.index,
  ],
  output: {
    path: path.join(__dirname, 'output'),
    filename: 'bundle.js'
  },
  plugins: [
    new HasteResolverPlugin({
      platform: 'web',
      nodeModules: ['react-web']
    }),
    new webpack.DefinePlugin({
      'process.env': {
        'NODE_ENV': JSON.stringify(isProd? PROD: DEV),
      }
    }),
    isProd? new webpack.ProvidePlugin({
      React: "react"
    }): new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin(),
    new HtmlPlugin(),
  ],
  module: {
    loaders: [{
      test: /\.json$/,
      loader: 'json',
    }, {
      test: /\.jsx?$/,
      loaders: ['react-hot', 'babel?stage=1'],
      include: [config.paths.src],
      exclude: [/node_modules/]
    }, {
        test: /\.es6\.js$/, loader: "babel-loader",
        query: {
          presets: ['es2015']
        }
      }]
  }
};

我的 GiftedMessenger.js 是

import React, {
  Text,
  View,
  ListView,
  TextInput,
  Dimensions,
  Animated,
  Platform,
  PixelRatio,
  Component,
} from 'react-native';

import Message from './Message';
import GiftedSpinner from 'react-native-gifted-spinner';
import moment from 'moment';
import {setLocale} from './Locale';
import deepEqual from 'deep-equal';
import Button from 'react-native-button';

class GiftedMessenger extends Component {

  constructor(props) {..... many code stuff

我的 GiftedMessengerContainer.js 是

'use strict';
var React = require('react-native');
import React, {
  Linking,
  Platform,
  ActionSheetIOS,
  Dimensions,
  View,
  Text,
  //Navigator,
  Component,
} React;

var GiftedMessenger = require('react-native-gifted-messenger');
var Communications = require('react-native-communications');


// var STATUS_BAR_HEIGHT = Navigator.NavigationBar.Styles.General.StatusBarHeight;
// if (Platform.OS === 'android') {
//   var ExtraDimensions = require('react-native-extra-dimensions-android');
//   var STATUS_BAR_HEIGHT = ExtraDimensions.get('STATUS_BAR_HEIGHT');
// }


class GiftedMessengerContainer extends Component {
.
.
.
code stuff

我到底哪里错了?

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • webpack 模块解析失败意外字符“@”(webpack module parse failed Unexpected character '@')
    问题 我正在使用 vue-cli,在 main.js 中导入一个 css 文件后, import Vue from 'vue' import App from './App.vue' import 'element-ui/lib/theme-default/index.css' import ElementUI from 'element-ui' Vue.use(ElementUI); new Vue({ el: '#app', render: h => h(App) }) 控制台记录了一个错误并且无法呈现 VM818:1Uncaught Error: Module parse failed: C:\02-folks\new-version\vueproject\fademo01\node_modules.1.0.2@element-ui\lib\theme-default\index.css Unexpected character '@'.. . 我已经安装了 style-loader 和 css loader 这是 package.json 文件 { "name": "fademo01", "description": "A Vue.js project", "author": "", "private": true, "scripts": { "dev": "cross
  • 从命令行运行 Python 时导入 urllib.parse 失败(import urllib.parse fails when Python run from command line)
    问题 我在 python 3.4.2 中观察到以下行为,我无法解释。 希望有人可以对此事有所了解: 在 IPython 中: In [129]: import urllib In [130]: print(urllib.parse) <module 'urllib.parse' from '/Users/ashwin/.pyenv/versions/3.4.2/lib/python3.4/urllib/parse.py'> 我导入了一个模块,并打印了它的一个属性。 一切都按预期工作。 到目前为止,生活还不错。 现在,我从命令行做同样的事情: $ python -c 'import urllib; print(urllib.parse)' Traceback (most recent call last): File "<string>", line 1, in <module> AttributeError: 'module' object has no attribute 'parse' 说什么?! 这不是应该的工作方式。 好吧,也许这是一个 python 范围的行为; 使用-c标志时,可能不会立即导入模块。 让我们尝试另一个模块: $ python -c 'import datetime; print(datetime.datetime)' <class 'datetime
  • 在 Common Test 测试运行期间,Lager 调用失败(Lager calls failing during Common Test test runs)
    问题 我决定在我的 Erlang 项目中设置啤酒。 我正在使用 erlang.mk,所以我添加了 ERLC_OPTS = +'{parse_transform, lager_transform}' 到我的 Makefile。 我可以运行make all并编译模块而不会出错。 我还可以启动一个erl控制台并运行包含使用大容量模块的应用程序。 在控制台会话期间不会生成错误并记录更多消息。 似乎一切都很好(这是我第一次使用啤酒)。 但是,当我运行 Common Test 时,较大的调用失败: 10:11:17.174 [error] CRASH REPORT Process <0.238.0> with 2 neighbours exited with reason: call to undefined function lager:info("Params: ~p", [[]]) in gen_server:init_it/6 line 328 由于看起来好像我正在测试的模块已正确编译,因此我认为这是不存在较大模块的问题。 但是,如果我添加这个: erlang:display(lager:module_info()), 在第一个啤酒调用上方它成功,打印啤酒的模块信息。 我假设我正在进行的日志记录调用正在利用一些解析转换魔法来工作,这在我的 Common Test 运行期间不存在。
  • 即使测试失败,如何编译所有 maven 模块,但如果任何测试失败,则整体构建失败(How to compile all maven modules even if tests fail, but fail overall build if any tests fail)
    问题 上下文:我想编译和测试多模块项目中的所有模块,但如果任何编译或测试失败,我希望整个构建失败。 默认配置要么在第一次失败时停止,要么在测试失败后跳过模块 跑步: mvn 全新安装 在第一个出现故障的模块处停止。 如果添加: mvn clean install -fae //最后失败 然后运行所有模块,但如果测试失败,则跳过任何依赖模块: [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] ------------------------------------------------------------------------ [INFO] Module A ............................................. SUCCESS [15.210s] [INFO] Module B ............................................. SUCCESS [10.923s] [INFO] Module C ............................................. FAILED [1.731s] [INFO]
  • 为什么我的XSD文件无法使用XML :: LibXML解析?(Why does my XSD file fail to parse with XML::LibXML?)
    问题 我正在尝试使用LibXML :: Schema Validator CPAN模块针对架构验证XML。 在同一脚本中,使用XML :: DOM CPAN模块来解析XML。 我希望我的脚本采用XML文件针对XSD对其进行验证并进行解析。 当我尝试运行脚本时,针对xsd进行验证后,它将退出并且不会解析XML。 我希望它解析XML文件(如果有效)并生成DOM结构。 如果有人可以分享一些见解,我将不胜感激。 #usr/bin/perl -w use XML::LibXML; my $schema = XML::LibXML::Schema->new(location =>'export.xsd'); my $parser = XML::LibXML->new; my $xml = 'Export.xml'; my $doc = $parser->parse_file($xml); eval { $schema->validate( $doc ) }; print $@ if $@; print "$xml is valid\n"; use XML::DOM; #use strict; my $parser = new XML::DOM::Parser; my $doc = $parser->parsefile ("Export.xml"); my
  • Maven:从属性文件中设置pom.xml中的属性(Maven: set property in pom.xml from properties file)
    问题 我有一个多模块项目,在不同模块版本上有很多依赖性。 目前,版本已进行硬编码,因此需要手动进行更改。 因此,我决定将所有这些文件放入属性文件,并在项目构建期间从中获取属性值。 这是我尝试执行的操作: 根pom.xml <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0-alpha-2</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>./version.properties</file> </files> </configuration> </execution> </executions> </plugin> 文件version.properties module1.version=1.1 module2.version=1.8 module3.version=5.4 pom.xml模块的示例 <properties> <module1.project.version>$
  • 在没有外部模块的情况下使用 Python 解析 HTML 文件(Parse HTML file using Python without external module)
    问题 我正在尝试使用 Python 解析 html 文件而不使用任何外部模块。 原因是我正在触发 jenkins 工作并遇到一些 lxml 和 BeautifulSoup 的导入问题(尝试解决它,我认为我正在做一些工程来完成我的工作) 输入: <tr class="test"> <td class="test"> <a href="a.html">BA</a> </td> <td class="duration"> 0.000s </td> <td class="zero number">0</td> <td class="zero number">0</td> <td class="zero number">0</td> <td class="passRate"> N/A </td> </tr> <tr class="test"> <td class="test"> <a href="o.html">Aa</a> </td> <td class="duration"> 0.000s </td> <td class="zero number">0</td> <td class="zero number">0</td> <td class="zero number">0</td> <td class="passRate"> N/A </td> </tr> <tr class=
  • 为什么我的自定义 Ansible 模块失败?(Why does my custom Ansible module fail?)
    问题 我正在学习 ansible,所以我写了我能想到的最简单的剧本和模块,但它失败了。 我的剧本 --- - hosts: demo tasks: - name: install demo action: install 我的模块 echo "changed=True msg=OK" 以下似乎很好: bash 脚本模式为 755 剧本正确链接到模块 这是输出: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "changed=True msg=OK\r\n", "msg": "MODULE FAILURE", "parsed": false} 我究竟做错了什么? 我怎样才能使这项工作? 回答1 模块的输出必须是 JSON。 尝试这个: echo "{\"changed\": false, \"msg\" : \"ok\"}" 从文档: 你也不应该在模块中这样做: print "some status message" 因为输出应该是有效的 JSON。 和: 如果模块返回 stderr 或以其他方式无法生成有效的 JSON,实际输出仍将显示在 Ansible 中,但命令不会成功。
  • 在Python 2.7中导入“ urllib3.util”失败?(Import of 'urllib3.util' failing in Python 2.7?)
    问题 我正在研究别人编写的Python脚本。 我正在尝试使其在我的本地开发计算机上运行而没有任何问题。 我已经安装了脚本所需的模块(请求,urllib3和oath2),但是却遇到了以下错误,我正在努力解决; Traceback (most recent call last): File "/home/saeed/ps4/scrape/run.py", line 2, in <module> import get_data as gd, time File "/home/saeed/ps4/scrape/get_data.py", line 8, in <module> import sys, oauth2, requests, json File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 58, in <module> from . import utils File "/usr/local/lib/python2.7/dist-packages/requests/utils.py", line 25, in <module> from .compat import parse_http_list as _parse_list_header File "/usr/local/lib
  • ValueError:使用conda命令后无法解析CPython sys.version(ValueError: failed to parse CPython sys.version after using conda command)
    问题 我遇到了一个无法解决的错误,尽管其他人报告了相同的错误。 我正在远程连接到Linux机器。 我已经安装了最新版本的anaconda: $ bash Anaconda2-2.4.0-Linux-x86_64.sh // A lot of python libraries get installed installing: _cache-0.0-py27_x0 ... Python 2.7.10 :: Continuum Analytics, Inc. creating default environment... installation finished. 我更新了相应的路径,似乎可以正常工作: $ python Python 2.7.10 |Anaconda 2.4.0 (64-bit)| (default, Oct 19 2015, 18:04:42) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. Anaconda is brought to you by Continuum Analytics. Please check out: http://continuum.io
  • 在解析器中报告非致命错误的 Pythonic 方法是什么?(What's the Pythonic way to report nonfatal errors in a parser?)
    问题 我创建的解析器从文件中读取记录的国际象棋游戏。 API 是这样使用的: import chess.pgn pgn_file = open("games.pgn") first_game = chess.pgn.read_game(pgn_file) second_game = chess.pgn.read_game(pgn_file) # ... 有时会遇到非法移动(或其他问题)。 什么是处理它们的好的 Pythonic 方式? 遇到错误时立即引发异常。 然而,这使得每个问题都是致命的,因为执行会停止。 通常,仍有有用的数据已被解析并可返回。 另外,你不能简单地继续解析下一个数据集,因为我们仍然处于一些半读数据的中间。 累积异常并在游戏结束时引发它们。 这使得错误再次致命,但至少你可以抓住它并继续解析下一场比赛。 引入一个像这样的可选参数: game = chess.pgn.read_game(pgn_file, parser_info) if parser_info.error: # This appears to be quite verbose. # Now you can at least make the best of the sucessfully parsed parts. # ... 这些或其他方法中的一些是否在野外使用? 回答1 实际上,这些都是致命的错误
  • 在 Parse Cloud Code 更新 Stripe 模块(Update Stripe module at Parse Cloud Code)
    问题 事实证明,Parse could Code 中的 Stripe 模块已过时且不会更新。 来源: https://developers.facebook.com/bugs/523104684492016/ 解析模块使用的是旧版本的 API,近期没有更新它的计划。 作为解决方法,请直接从第三方站点下载较新的 SDK,将其放置在“cloud/”文件夹中并使用 require() 导入; 我们将按设计关闭它。 我已经通过终端使用命令下载了 Stripe 模块 npm install stripe 我正在尝试导入这个模块,但是当我将它部署到 Parse 时,似乎大多数模块都丢失了。 我收到这样的错误: 更新失败并出现错误:在 node_modules/stripe/lib/stripe.js:24:12 处找不到模块 child_process.js 希望有人能指出我如何正确地将第三方模块添加到 Parse Cloud Code。 谢谢。 回答1 似乎 Parse 的模块支持真的很有限,添加子模块是不可能的,或者太复杂了,甚至无法打扰,这就是我决定转移到 Heroku 的原因。 感谢所有的答案! 回答2 我知道这有点旧,但我的“解决方法”是将来自 Stripe 文档的 cURL 请求转换为 Parse.Cloud.httpRequests,而不是导入模块。 您可以通过这种方式访问​
  • 尝试在Webpack中使用猫鼬时收到大量神秘的错误和警告(Getting large cryptic errors and warnings when trying to use mongoose with webpack)
    问题 我正在使用webpack将es6同构反应应用程序分别编译为客户端和服务器捆绑包。 我已经安装了猫鼬,并试图在我的应用程序的服务器部分中使用它,但是当我尝试构建时,控制台中出现了一些可怕的错误: ./~/mongoose/lib/drivers/index.js中的警告关键依赖项:8:11-74依赖项的请求是一个表达式@ ./~/mongoose/lib/drivers/index.js 8:11-74 ./~/mongoose/lib/drivers/SPEC.md中的警告模块解析失败:/Users/richie/Code/CreativeFlumeProjects/cf-website/node_modules/mongoose/lib/drivers/SPEC.md第2行:意外的令牌非法您可能需要适当的加载程序来处理此文件类型。 | | #驱动程序规格| | TODO @ ./~/mongoose/lib/drivers ^。/。* $ ./~/express/lib/view.js中的警告关键依赖项:78:29-56依赖项的请求是一个表达式@ ./~/express/lib/view.js 78:29-56 ./~/es6-promise/dist/es6-promise.js中的警告未找到模块:错误:无法解析/ Users / richie / Code /
  • NODE.JS:致命错误 - JS 分配失败 - 处理内存不足,同时解析大型 excel 文件(NODE.JS: FATAL ERROR- JS Allocation failed - process out of memory, while parsing large excel files)
    问题 我正在使用 nodejs 解析带有模块“jsxlsx_async”的 xlsx 文件,并且值将存储在 mongodb 中。 我的代码: xlsx(file, function(err,wb){ if (err){ //handling err } //get data array wb.getSheetDataByName('Sheet1', function(err,data){ if (err){ //handling err } //handling data console.log(data); }); }); 使用:Nodejs:v0.10.25,MongoDB:v2.2.6,操作系统:win8,RAM:6GB 我的步骤: 1.读取上传的 xlsx 文件并将这些读取值保存到 JS 对象中。 2.通过迭代JS对象上的值将读取的值保存到mongodb集合中。 这适用于较小的 xlsx 文件,但我想解析大于 50MB 的 xlsx 文件。 我的问题是我将整个 xlsx 值存储在单个 JS 对象中。 请为解决方案提供一些更好的想法。 有没有更好的方法来逐行读取 xlsx 并在读取一行时立即保存值? 回答1 我之前也遇到过类似的问题。 我需要从 txt 文件中读取一个巨大的 JSON 对象,但该进程因内存不足而被终止。 关于这个问题,我的解决方案是将这个巨大的文件分成2个文件
  • Alfresco Maven SDK-如果模块版本字符串以“ -SNAPSHOT”结尾,则失败(Alfresco Maven SDK - fails if module version string ends with “-SNAPSHOT”)
    问题 因此,我创建了一个包含回购和共享的amp项目,每次尝试构建或运行该项目时,它都会失败: java.lang.NoClassDefFoundError: de/schlichtherle/truezip/fs/FsSyncExceptionBuilder at de.schlichtherle.truezip.fs.FsManager.sync(FsManager.java:99) at de.schlichtherle.truezip.fs.FsSyncShutdownHook$Hook.run(FsSyncShutdownHook.java:93) Caused by: java.lang.ClassNotFoundException: de.schlichtherle.truezip.fs.FsSyncExceptionBuilder at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) at org.codehaus.plexus
  • Bower 组件 Quilljs 编辑器模块 (ES6) 在运行 gulp build 时失败(Bower component Quilljs editor module (ES6) is failing while running gulp build)
    问题 我收到错误 events.js:160 throw er; // Unhandled 'error' event ^ Error: scripts/vendor.js: error: couldn't process source due to parse error 'import' and 'export' may appear only with 'sourceType: module' (176000:0) 吞咽文件 // gulp.task('bower', ['clean'], function () { gulp.start('bower:build'); }); gulp.task('bower:build', ['bower:scripts', 'bower:styles', 'bower:scss', 'bower:scripts:minify', 'bower:styles:minify']); gulp.task('bower:scripts', ['bower:partials'], function() { return gulp.src([ path.join(paths.src, '/app/triangular/**/*.js'), path.join(paths.tmp, 'partials', 'templateCacheHtml.js'
  • 将字节码转换为 dex 时出错:原因:java.lang.RuntimeException:异常解析类 - Android studio 2.0 beta 6(Error converting bytecode to dex: Cause: java.lang.RuntimeException: Exception parsing classes - Android studio 2.0 beta 6)
    问题 我使用 gradle 更新到最新版本的 Android studio 2.0 Beta 6: dependencies { classpath 'com.android.tools.build:gradle:2.0.0-beta6' } 该应用程序在模拟器和设备上运行良好,我测试了所有东西并且运行良好。 仅当我尝试生成签名的 APK 时才遇到很多错误, 我在依赖项中遇到了一些错误,当我排除了矢量可绘制对象,矢量动画可绘制对象和Support-v4库时,所有这些都得到了解决 现在我没有任何依赖错误。 现在我的 app 模块的 gradle.build 看起来像这样: apply plugin: 'com.android.application' android { configurations { //all*.exclude group: 'com.android.support', module: 'support-v4' all*.exclude module: 'animated-vector-drawable' all*.exclude module: 'support-vector-drawable' //all*.exclude module: 'support-v4' } repositories { maven { url "https://jitpack
  • 您如何为python模块的argparse部分编写测试?(How do you write tests for the argparse portion of a python module?)
    问题 我有一个使用argparse库的Python模块。 如何为代码库的该部分编写测试? 回答1 您应该重构代码并将解析移至函数: def parse_args(args): parser = argparse.ArgumentParser(...) parser.add_argument... # ...Create your parser as you like... return parser.parse_args(args) 然后,在您的main函数中,应使用以下命令调用它: parser = parse_args(sys.argv[1:]) (其中删除了代表脚本名称的sys.argv的第一个元素,以使其在CLI操作期间不作为附加开关发送。) 在测试中,然后可以使用要测试的参数列表调用解析器函数: def test_parser(self): parser = parse_args(['-l', '-m']) self.assertTrue(parser.long) # ...and so on. 这样,您就不必执行应用程序的代码即可仅测试解析器。 如果稍后需要在应用程序中更改和/或向解析器添加选项,请创建一个工厂方法: def create_parser(): parser = argparse.ArgumentParser(...) parser.add
  • nodeJS实战:自定义模块与引入,不同模块的函数传递及回调处理,exports与module.exports(基于nodejs6.2.0)
    注意:为什么不用module.exports,而使用exports?module.exports的优先级比exports要高,为了防止自定义的模块与nodeJS原生模块冲突,所以这里采用exports定义模块名文件名:root.js(node入口),parseRequest.js(自定义模块)一、自定义nodejs模块parseRequest.js文件代码//文件名:parseRequest.js //将自定义parseRequest模块映射到parseReq入口,调用时直接调parseRequest(s1, s2),而不是parseReq(s1,s2) exports.parseRequest = parseReq; //用于处理所有请求 function parseReq(s1, s2) { var fs = s1; var queryString = s2; //解析REST请求 var restParse = function(response, pathName, queryStr) { //解析请求参数 var reqStr = queryString.parse(queryStr); switch (pathName) { //简单实例,解析请求参数获取用户名并通过json数据返回 case "/dojoTest/getUser": response
  • Node.js基础班(一)
    1.Node.js环境搭建 1.1 Node.js运行环境安装 官网: http://nodejs.org/en/ 2. Node.js快速入门 2.1 Node.js 的组成 JavaScript 由三部分组成,ECMAScript,DOM,BOMNode.js 是由ECMAScript 及 Node 环境提供的一些附加API组成的,包括文件,网络,路径等一些更强大的API 2.2 Node.js 全局对象global 在浏览器中全局对象是 window,在Node中全局对象是globalNode 中全局对象有以下方法,可以在任何地方使用,global可以省略 console.log() 在控制台输出setTimeout() 设置超时定时器clearTimeout()清楚超时定时器setInterval() 设置间歇定时器clearInterval() 清楚间歇定时器 2.4 Node.js模块化开发规范 Node.js规定一个 JavaScript 文件就是一个模块,模块内部定义的变量和函数默认情况下外部无法得到 模块内部可以使用 exports 对象进行成员导出,使用 require方法 导入其他模块 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WAPC1zPA-1617370125077)(https://i.loli.net/2021